David, On Feb 9, 2012, at 10:48 AM, David L Lorenz wrote:
> > Simon, > It was not clear that I needed any makefiles in src. I have seen no > documentation anywhere that I needed a makefile in src. You don't - I thought you are using one to modify the object list. Simple output of ls -l in your src would have been very helpful with your first e-mail ;). > The FORTRAN source compiles just fine by hand, so the error is not in the > code. It is just one single source code file with one subroutine. > The problem appears to be the z that is inserted in from the the object > file name when the .dll is created. Actually, I think I now see the problem - you have incompatible "make" on your PATH that does not come form the R tools (easy way to tell is that our make is case-sensitive while yours is not - hence the warning). Please make sure you have Rtools on your PATH *before* any other tools. Cheers, Simon > > > From: Simon Urbanek <simon.urba...@r-project.org> > To: David L Lorenz <lor...@usgs.gov> > Cc: r-devel@r-project.org > Date: 02/09/2012 09:24 AM > Subject: Re: [Rd] FORTRAN compilation error > > > > > On Feb 9, 2012, at 9:54 AM, David L Lorenz wrote: > > > > > I should also have explained that I was using the default Makeconf file in > > R-2.14.1\etc\i386. it is reproduced below. I've tried it on other packages > > and it inserts a z in front of the object files. > > I'm not talking about R Makeconf, but the one in your package (in src). What > are your settings there? And what are the files? > > Thanks, > Simon > > > > > Dave > > > > #-*- 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' for 32-bit > > # SYMPAT = 's/^.* [BCDRT] / /p' for 64-bit > > SYMPAT = 's/^.* [BCDRT] _/ /p' > > IMPDIR = bin/i386 > > # 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 = d:/RCompile/CRANpkg/extralibs/local > > > > ifneq ($(strip $(LOCAL_SOFT)),) > > LOCAL_CPPFLAGS = -I"$(LOCAL_SOFT)/include" > > LOCAL_LIBS = -L"$(LOCAL_SOFT)/lib$(R_ARCH)" -L"$(LOCAL_SOFT)/lib" > > endif > > > > DLLTOOL = $(BINPREF)dlltool --as $(BINPREF)as $(DT_ARCH) > > DLLTOOLFLAGS = -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 -mtune=core2 > > CPICFLAGS = > > CPPFLAGS = > > CXX = $(BINPREF)g++ $(M_ARCH) > > CXXCPP = $(CXX) -E > > CXXFLAGS = -O2 -Wall $(DEBUGFLAG) -mtune=core2 > > 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) -mtune=core2 > > # additional libs needed when linking with $(FC), e.g. on Solaris > > FCLIBS = > > F77 = $(BINPREF)gfortran $(M_ARCH) > > F77_VISIBILITY = > > FFLAGS = -O3 $(DEBUGFLAG) -mtune=core2 > > 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 = /i386 > > RANLIB = $(BINPREF)ranlib > > 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) -Wl,--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 --strip-unneeded > > STRIP_STATIC_LIBS = $(BINPREF)strip --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 $@ > > > > > > > > From: Simon Urbanek <simon.urba...@r-project.org> > > To: David L Lorenz <lor...@usgs.gov> > > Cc: r-devel@r-project.org > > Date: 02/08/2012 07:13 PM > > Subject: Re: [Rd] FORTRAN compilation error > > > > > > > > > > > > On Feb 8, 2012, at 3:16 PM, David L Lorenz wrote: > > > > > I get an error when trying to compile a FORTRAN source file for use in a > > > package that I am developing. The error, reported in 00install.out is > > > below. > > > > > > * installing *source* package 'USGSstats' ... > > > ** libs > > > > > > *** arch - i386 > > > C:/PROGRA~1/R/R-214~1.1/etc/i386/Makeconf:194: warning: overriding recipe > > > for target `.m.o' > > > C:/PROGRA~1/R/R-214~1.1/etc/i386/Makeconf:187: warning: ignoring old > > > recipe for target `.m.o' > > > gfortran -O3 -mtune=core2 -c seakenF.f -o seakenF.o > > > "zseakenF.o" was unexpected at this time. > > > make: *** [USGSstats.dll] Error 255 > > > ERROR: compilation failed for package 'USGSstats' > > > > > > I am running R 2.14.1 on a Windows 7 pc. The gnu compilers are all > > > installed and work just fine. In fact, the .o file is created and I can > > > manually create the .dll file. > > > The error seems to be in the generation of the object name zseakenF.o. I > > > do not see where that might have been generated in the Makeconf file. > > > > > > > The problem is caused by your Makeconf which you didn't share, so there is > > not much we can help you with ... You should remove the offending Makeconf > > to start with ... > > > > Cheers, > > Simon > > > > > > > > > > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel