#-*- Makefile -*- ## This files contains tabs: make sure your editor leaves them unchanged. ## ===== configuration macros for building packages or R =============== # Alternatives GCC4 or F2C (use suitable f2c rather than a Fortran compiler). BUILD=GCC4 # an alternative is to use -gstabs here, if the debugger supports only stabs. G_FLAG=-gdwarf-2 ## ============== configuration macros for building R =================== # Should CHM help be built? Any value other than TRUE disables this USE_CHM = TRUE # Comment out if the msvcrt.dll malloc/free is required. LEA_MALLOC=YES # Set to YES and specify the path if you want to use the ATLAS BLAS. USE_ATLAS=NO ATLAS_PATH=/R/ATLAS/lib/WinNT_P4SSE2 # Support for the ACML and Goto BLASes has been withdrawn: see R-admin.html # Where does 'HTML Help Workshop' live? (unused if compiled HTML help is # not requested. Spaces allowed.) HHWDIR=C:/Program Files/HTML Help Workshop # Define this to enable memory profiling. # R_MEMORY_PROFILING=YES # Where does Tcl/Tk live? Spaces allowed. TCL_HOME = $(RHOME)/Tcl TCL_VERSION = 85 # Define to use svnversion to set SVN-REVISION (slow, and requires a clean # checkout with no modifications). # USE_SVNVERSION = YES # We normally link against DLLs, but this macro forces the use of import libs # Needed if using other compilers, and currently on Win64 # USE_IMPLIBS = YES # 32- or 64-bit Windows? WIN=32 ifeq ($(strip $(WIN)),64) USE_IMPLIBS = YES endif # use ICU USE_ICU=NO # path to parent of ICU headers ICU_PATH=/sources/icu ## ====== configuration macros for building installer =========== # location where Inno Setup 5.[12].x was installed. Spaces allowed. ISDIR=C:/packages/Inno ## ====== configuration macros for building MSI installer =========== # location where WiX was installed. Spaces allowed, slashes required. WIXDIR=C:/packages/WiX ## ====== configuration macros for building packages ================ ## For a package using F90/95 set the name or path of gfortran.exe ## or g95.exe. Spaces allowed. ifeq ($(strip $(BUILD)),GCC4) FC=gfortran$(GCC4_SUFF) else # needs to be set by user FC= endif FCFLAGS=-O3 ## =============== end of user-customizable parts =================== DEPARG=-MM C99FLAG=-std=gnu99 ifeq ($(strip $(BUILD)),GCC4) F77=gfortran$(GCC4_SUFF) FLIBS=-lgfortran AWK=gawk ## for mingw-runtime <= 3.11 # C99FLAG=-std=gnu99 -fgnu89-inline ## earlier Rtools needs -sjlj ## an alternative is -dw2, which currently fails building R. GCC4_SUFF= endif ifeq ($(strip $(BUILD)),F2C) F77=sh $(RHOME)/src/scripts/f77_f2c FLIBS=-lf2c AWK=gawk endif ifeq ($(strip $(USE_IMPLIBS)),YES) IMPDIR=lib else IMPDIR=bin endif BLAS_LIBS=-L$(RHOME)/$(IMPDIR) -lRblas LAPACK_LIBS=-L$(RHOME)/$(IMPDIR) -lRlapack GRAPHAPP_LIB=-lRgraphapp ZLIB_LIBS=-lRzlib AR=ar AS=as CAT=cat CC=gcc$(GCC4_SUFF) $(C99FLAG) CP=cp # as set by make CPP=$(CC) -E CXX=g++$(GCC4_SUFF) ## overridden in some packages DLL_LDMAIN=$(CC) DLL=$(DLL_LDMAIN) ## formerly used version without -k for front-ends/libproxy.a DLLTOOL=dlltool ## some versions have trouble with paths, so we always need this ## even for native builds DLLTOOLFLAGS=--as $(AS) -k ECHO=echo FIND=find LINKER=$(MAIN_LD) MAIN_LD=$(CC) MKDIR=mkdir NM=nm OBJC=gcc$(GCC4_SUFF) PERL=perl RANLIB=ranlib RESCOMP=windres # as set by make RM=rm -f SED=sed SORT=sort ## from etc/Renviron.site on Unix EGREP=grep -e LN_S=cp -p TAR=tar .SUFFIXES: .SUFFIXES: .c .cc .cpp .C .f .o .a .def .exp .dll .exe .d .f90 .f95 .m .S .c.d: @echo "making $@ from $<" @$(CC) $(DEPARG) $(CPPFLAGS) $($*-CPPFLAGS) $< -o $@ .cc.d: @echo "making $@ from $<" @$(CXX) $(DEPARG) $(CPPFLAGS) $($*-CPPFLAGS) $< -o $@ .cpp.d: @echo "making $@ from $<" @$(CXX) $(DEPARG) $(CPPFLAGS) $($*-CPPFLAGS) $< -o $@ .C.d: @echo "making $@ from $<" @$(CXX) $(DEPARG) $(CPPFLAGS) $($*-CPPFLAGS) $< -o $@ .m.d: @echo "making $@ from $<" @$(OBJC) $(DEPARG) $(CPPFLAGS) $($*-CPPFLAGS) $< -o $@ .c.o: $(CC) $(CPPFLAGS) $($*-CPPFLAGS) $(CFLAGS) $($*-CFLAGS) -c $< -o $@ .f.o: $(F77) $(FFLAGS) $($*-FFLAGS) -c $< -o $@ .cc.o: $(CXX) $(CPPFLAGS) $($*-CPPFLAGS) $(CXXFLAGS) $($*-CXXFLAGS) -c $< -o $@ .cpp.o: $(CXX) $(CPPFLAGS) $($*-CPPFLAGS) $(CXXFLAGS) $($*-CXXFLAGS) -c $< -o $@ .C.o: $(CXX) $(CPPFLAGS) $($*-CPPFLAGS) $(CXXFLAGS) $($*-CXXFLAGS) -c $< -o $@ .m.o: $(OBJC) $(CPPFLAGS) $($*-CPPFLAGS) $(OBJCFLAGS) $($*-OBJCFLAGS) -c $< -o $@ %.exe: $(LINKER) $(LINKFLAGS) $($*-LINKFLAGS) -o $@ $^ $($*-LIBS) $(LIBS) %.dll: @$(ECHO) EXPORTS > $*.def @$(NM) $^ | $(SED) -n 's/^.* [BCDRT] _/ /p' >> $*.def $(DLL) -shared $(DLLFLAGS) $($*-DLLFLAGS) -o $@ $*.def $^ $($*-DLLLIBS) $(DLLLIBS) @$(RM) $*.def lib%.dll.a: %.def $(DLLTOOL) $(DLLTOOLFLAGS) $($*-DLLTOOLFLAGS) --dllname $*.dll --input-def $*.def --output-lib $@ %.a: # @$(ECHO) -------- Building $@ from $^ -------- @$(RM) $@ $(AR) crs $@ $^ %.o: %.rc $(RESCOMP) $(RESFLAGS) $($*-RESFLAGS) -i $< -o $@ .f90.o: "$(FC)" $(PKG_FCFLAGS) $(FCFLAGS) -c $< -o $@ .f95.o: "$(FC)" $(PKG_FCFLAGS) $(FCFLAGS) -c $< -o $@