#-*- Makefile -*- ## This files contains tabs: make sure your editor leaves them unchanged. ## ===== configuration macros for building packages or R =============== # Alternatives MINGW (mingw), CROSS (Linux) BUILD=MINGW HELP = YES ifeq ($(strip $(BUILD)),CROSS) WINHELP = NO else WINHELP = CHM # NO or CHM endif ## ============== configuration macros for building R =================== # 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_PIIISSE1 # Set to YES and specify the DLL name if you want to use K. Goto's BLAS. USE_GOTO=NO GOTO_DLL=libgoto_p4_512-r0.9.dll # Where does 'HTML Help Workshop' live? (unused if compiled HTML help is # not requested. Spaces allowed.) HHWDIR=C:/Program Files/HTML Help Workshop # Where does Tcl/Tk live? Spaces allowed. TCL_HOME = $(RHOME)/Tcl TCL_VERSION = 84 # Define to use unicows # USE_UNICOWS = YES # Define to use svnversion to set SVN-REVISION (slow, but more informative # than without it because mixed or modified revisions will be indicated) # USE_SVNVERSION = YES ## ====== configuration macros for building installers =========== # location where Inno Setup 5.1.x was installed. Spaces allowed. ISDIR=C:/packages/Inno51 ## =================== cross-compilation settings ================= ifeq ($(strip $(BUILD)),CROSS) # Next might be i386-mingw32msvc- or i586- depending on the cross-compiler. BINPREF=mingw32- # Set this to where the mingw32 include files are. It must be accurate. HEADER=/users/ripley/R/cross-tools4/i586-mingw32/include endif # path (possibly full path) to same version of R on the host system # R_EXE=R ## =============== end of user-customizable parts =================== ifneq ($(strip $(BUILD)),CROSS) ifeq ($(strip $(shell latex --version | grep ^MiKTeX | wc -l)),1) # MiKTeX R_TEXOPTS=--include-directory=$(RHOME)/share/texmf else R_TEXOPTS= endif else # cross-builds R_TEXOPTS= endif ifeq ($(strip $(BUILD)),MINGW) BINPREF= MINGW32CFLAG= MINGW32LDFLAG= FLIBS=-lg2c AWK=gawk ## only safe for gcc >= 3.1 DEPARG=-MM endif ifeq ($(strip $(BUILD)),CROSS) MINGW32CFLAG=-isystem $(HEADER) MINGW32LDFLAG= FLIBS=-lg2c AWK=awk ## BDR's build of cross-compiler was 2.95.3 DEPARG=-M endif ifdef SUPPORT_GUI_MBCS CFLAGS+=-DSUPPORT_GUI_MBCS endif ifdef USE_UNICOWS LIBEXTRAS += -lunicows endif PERL=perl RM=rm -f SED=sed ECHO=echo CP=cp MKDIR=mkdir CAT=cat CC=$(BINPREF)gcc $(MINGW32CFLAG) CXX=$(BINPREF)g++ $(MINGW32CFLAG) F77=$(BINPREF)g77 AS=$(BINPREF)as DLL_LDMAIN=gcc DLL=$(BINPREF)$(DLL_LDMAIN) $(MINGW32LDFLAG) ## use version without -k for front-ends/libproxy.a DLLTOOL_WIN32=$(BINPREF)dlltool --as $(AS) DLLTOOL=$(DLLTOOL_WIN32) -k LINKER=$(BINPREF)gcc $(MINGW32LDFLAG) AR=$(BINPREF)ar RANLIB=$(BINPREF)ranlib NM=$(BINPREF)nm CPP=$(CC) -E RESCOMP=$(BINPREF)windres .SUFFIXES: .c .cc .cpp .C .f .o .a .def .exp .dll .exe .d .c.d: @echo "making $@ from $<" @$(CC) $(DEPARG) $(CFLAGS) $($*-CFLAGS) $< -o $@ .cc.d: @echo "making $@ from $<" @$(CXX) $(DEPARG) $(CXXFLAGS) $($*-CXXFLAGS) $< -o $@ .cpp.d: @echo "making $@ from $<" @$(CXX) $(DEPARG) $(CXXFLAGS) $($*-CXXFLAGS) $< -o $@ .C.d: @echo "making $@ from $<" @$(CXX) $(DEPARG) $(CXXFLAGS) $($*-CXXFLAGS) $< -o $@ .c.o: $(CC) $(CFLAGS) $($*-CFLAGS) -c $< -o $@ .f.o: $(F77) $(FFLAGS) $($*-FFLAGS) -c $< -o $@ .cc.o: $(CXX) $(CXXFLAGS) $($*-CXXFLAGS) -c $< -o $@ .cpp.o: $(CXX) $(CXXFLAGS) $($*-CXXFLAGS) -c $< -o $@ .C.o: $(CXX) $(CXXFLAGS) $($*-CXXFLAGS) -c $< -o $@ %.exe: $(LINKER) $(LINKFLAGS) $($*-LINKFLAGS) -o $@ $^ $($*-LIBS) $(LIBS) %.dll: # @$(ECHO) ------- Building $@ from $^ -------- @$(ECHO) LIBRARY $* > $*.def @$(ECHO) EXPORTS >> $*.def @$(NM) $^ > Defs @$(SED) -n '/^........ [BCDRT] _/s/^........ [BCDRT] _/ /p' Defs >> $*.def @$(RM) Defs $(DLL) --shared $(DLLFLAGS) $($*-DLLFLAGS) -o $@ $*.def $^ $($*-DLLLIBS) $(DLLLIBS) @$(RM) $*.def lib%.a: %.def @$(ECHO) -------- Building $@ from $^ -------- $(DLLTOOL) $(DLLTOOLFLAGS) $($*-DLLTOOLFLAGS) --dllname $*.dll --def $*.def --output-lib lib$*.a %.a: # @$(ECHO) -------- Building $@ from $^ -------- @$(RM) $@ $(AR) cr $@ $^ $(RANLIB) $@ %.o: %.rc $(RESCOMP) $(RESFLAGS) $($*-RESFLAGS) -i $< -o $@