#-*- Makefile -*- # $(R_HOME}/etc$(R_ARCH)/Makeconf # Hand-edited version for gnuwin32. ifdef DEBUG DLLFLAGS= DEBUGFLAG=-gdwarf-2 else DLLFLAGS=-s DEBUGFLAG= endif DLLFLAGS+= -static-libgcc LINKFLAGS+= -static-libgcc ## Things which are substituted by fixed/Makefile (and also -O3 -> -O2) WIN = 32 BINPREF = # SYMPAT = 's/^.* [BCDRT] _/ /p' or 32-bit and older 64-bit toolchains # SYMPAT = 's/^.* [BCDRT] / /p' for 64-bit >= May 2010 SYMPAT = @SYMPAT@ IMPDIR = bin # flags for multilib builds, for compilers, dlltool and windres M_ARCH = DT_ARCH = RC_ARCH = # Used by packages tcltk and tkrplot TCL_HOME = $(R_HOME)/Tcl LOCAL_SOFT = ifneq ($(strip $(LOCAL_SOFT)),) LOCAL_CPPFLAGS = -I"$(LOCAL_SOFT)/include" LOCAL_LIBS = -L"$(LOCAL_SOFT)/lib" endif DLLTOOL = $(BINPREF)dlltool DLLTOOLFLAGS =--as $(BINPREF)as $(DT_ARCH) -k NM = $(BINPREF)nm RESCOMP = $(BINPREF)windres $(RC_ARCH) ## MAIN_LD needs to be set by the package LINKER = $(MAIN_LD) ## as a default DLL = $(CC) ## Things defined in Renviron on Unix SED = sed TAR = tar ## Things defined in MkRules CAT = cat CP = cp MKDIR = mkdir RM = rm -f SORT = sort ## For use in packages GRAPHAPP_LIB = -lRgraphapp TCL_VERSION = 85 ZLIB_LIBS = -lRzlib AR = $(BINPREF)ar ## Used by packages 'maps' and 'mapdata' AWK = gawk BLAS_LIBS = -L"$(R_HOME)/$(IMPDIR)" -lRblas C_VISIBILITY = CC = $(BINPREF)gcc $(M_ARCH) CFLAGS = -O3 -Wall $(DEBUGFLAG) -std=gnu99 CPICFLAGS = CPPFLAGS = CXX = $(BINPREF)g++ $(M_ARCH) CXXCPP = $(CXX) -E CXXFLAGS = -O2 -Wall $(DEBUGFLAG) CXXPICFLAGS = DYLIB_EXT = .dll DYLIB_LD = $(DLL) DYLIB_LDFLAGS = -shared DYLIB_LINK = $(DYLIB_LD) $(DYLIB_LDFLAGS) $(LDFLAGS) ECHO = echo ECHO_C = ECHO_N = -n ECHO_T = FC = $(BINPREF)gfortran $(M_ARCH) FCFLAGS = -O3 $(DEBUGFLAG) # additional libs needed when linking with $(FC), e.g. on Solaris FCLIBS = F77 = $(BINPREF)gfortran $(M_ARCH) F77_VISIBILITY = FFLAGS = -O3 $(DEBUGFLAG) FLIBS = -lgfortran FCPICFLAGS = FPICFLAGS = FOUNDATION_CPPFLAGS = FOUNDATION_LIBS = JAR = JAVA = JAVAC = JAVAH = # JAVA_HOME = # JAVA_LD_LIBRARY_PATH = JAVA_LIBS = -L"$(JAVA_HOME)/bin/client" -ljvm -ljvm-w32 JAVA_CPPFLAGS = -I"$(JAVA_HOME)/../include" -I"$(JAVA_HOME)/../include/win32" LAPACK_LIBS = -L"$(R_HOME)/$(IMPDIR)" -lRlapack ## we only need this is if it is external, as otherwise link to R LIBINTL= LIBM = -lm LIBR = -L"$(R_HOME)/$(IMPDIR)" -lR LIBS = -lm ## needed by R CMD config LIBnn = lib LIBTOOL = LDFLAGS = ## needed to build applications linking to static libR # MAIN_LD = # MAIN_LDFLAGS = # MAIN_LINK = $(MAIN_LD) $(MAIN_LDFLAGS) $(LDFLAGS) # don't have this: would 'mkdir -p' do? # MKINSTALLDIRS = $(R_HOME)/bin/mkinstalldirs OBJC = $(CC) OBJCFLAGS = -O2 OBJC_LIBS = -lobjc OBJCXX = R_ARCH = RANLIB = $(BINPREF)ranlib $(M_ARCH) SAFE_FFLAGS = -O3 -ffloat-store SED = sed ## it seems some makes (but not ours) get upset if SHELL is set. # SHELL = /bin/sh SHLIB_CFLAGS = SHLIB_CXXFLAGS = SHLIB_CXXLD = $(CXX) ## ideally -shared -static-libstdc++, but not for gcc 4.2.1 SHLIB_CXXLDFLAGS = -shared SHLIB_EXT = .dll SHLIB_FCLD = $(FC) ## ideally -shared -static-libgfortran, but not for gcc 4.2.1 SHLIB_FCLDFLAGS = -shared SHLIB_FFLAGS = SHLIB_LD = $(CC) SHLIB_LDFLAGS = -shared SHLIB_LIBADD = SHLIB_LINK = $(SHLIB_LD) --export-all-symbols $(SHLIB_LDFLAGS) $(LDFLAGS) # not implemented in current toolchain SHLIB_OPENMP_CFLAGS = SHLIB_OPENMP_CXXFLAGS = SHLIB_OPENMP_FCFLAGS = SHLIB_OPENMP_FFLAGS = STRIP_LIBS = $(BINPREF)strip $(M_ARCH) --strip-unneeded STRIP_STATIC_LIBS = $(BINPREF)strip $(M_ARCH) --strip-debug TCLTK_CPPFLAGS = -I "$(TCL_HOME)/include" -DWin32 TCLTK_LIBS = -L"$(TCL_HOME)/bin" -ltcl$(TCL_VERSION) -ltk$(TCL_VERSION) STATIC_LIBR = R_XTRA_CFLAGS = R_XTRA_CPPFLAGS = -I"$(R_HOME)/include" R_XTRA_CXXFLAGS = R_XTRA_FFLAGS = ALL_CFLAGS = $(R_XTRA_CFLAGS) $(PKG_CFLAGS) $(CPICFLAGS) $(SHLIB_CFLAGS) $(CFLAGS) ALL_CPPFLAGS = $(R_XTRA_CPPFLAGS) $(PKG_CPPFLAGS) $(CPPFLAGS) $($*-CPPFLAGS) $(CLINK_CPPFLAGS) $(LOCAL_CPPFLAGS) ALL_CXXFLAGS = $(R_XTRA_CXXFLAGS) $(PKG_CXXFLAGS) $(CXXPICFLAGS) $(SHLIB_CXXFLAGS) $(CXXFLAGS) ALL_OBJCFLAGS = $(PKG_OBJCFLAGS) $(CPICFLAGS) $(SHLIB_CFLAGS) $(OBJCFLAGS) ALL_OBJCXXFLAGS = $(PKG_OBJCXXFLAGS) $(CXXPICFLAGS) $(SHLIB_CXXFLAGS) $(OBJCXXFLAGS) ALL_FFLAGS = $(R_XTRA_FFLAGS) $(PKG_FFLAGS) $(FPICFLAGS) $(SHLIB_FFLAGS) $(FFLAGS) ALL_LIBS = $(LOCAL_LIBS) $(PKG_LIBS) $(SHLIB_LIBADD) $(LIBR) $(LIBINTL) .SUFFIXES: .SUFFIXES: .c .cc .cpp .d .f .f90 .f95 .m .mm .M .o .a .def .dll .exe .rc .c.o: $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@ .c.d: @echo "making $@ from $<" @$(CC) -std=gnu99 -MM $(ALL_CPPFLAGS) $< > $@ .cc.o: $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -c $< -o $@ .cpp.o: $(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -c $< -o $@ .cc.d: @echo "making $@ from $<" @$(CXX) -M $(ALL_CPPFLAGS) $< > $@ .cpp.d: @echo "making $@ from $<" @$(CXX) -M $(ALL_CPPFLAGS) $< > $@ .m.o: $(OBJC) $(ALL_CPPFLAGS) $(ALL_OBJCFLAGS) -c $< -o $@ .m.d: @echo "making $@ from $<" @$(OBJC) -MM $(ALL_CPPFLAGS) $< > $@ .mm.o: $(OBJCXX) $(ALL_CPPFLAGS) $(ALL_OBJCXXFLAGS) -c $< -o $@ .M.o: $(OBJCXX) $(ALL_CPPFLAGS) $(ALL_OBJCXXFLAGS) -c $< -o $@ .f.o: $(F77) $(ALL_FFLAGS) -c $< -o $@ .f95.o: $(FC) $(PKG_FCFLAGS) $(FCPICFLAGS) $(FCFLAGS) -c $< -o $@ .f90.o: $(FC) $(PKG_FCFLAGS) $(FCPICFLAGS) $(FCFLAGS) -c $< -o $@ %.exe: $(LINKER) $(LINKFLAGS) $($*-LINKFLAGS) -o $@ $^ $($*-LIBS) $(LOCAL_LIBS) $(LIBS) %.dll: @echo EXPORTS > $*.def @$(NM) $^ | $(SED) -n $(SYMPAT) >> $*.def $(SHLIB_LD) -shared $(DLLFLAGS) -o $@ $*.def $^ $(ALL_LIBS) @$(RM) $*.def lib%.dll.a: %.def $(DLLTOOL) $(DLLTOOLFLAGS) $($*-DLLTOOLFLAGS) --dllname $*.dll --input-def $*.def --output-lib $@ %.a: @$(RM) $@ $(AR) crs $@ $^ %.o: %.rc $(RESCOMP) $(RESFLAGS) -i $< -o $@