[R-pkg-devel] Weird MAKEFLAGS bug
Greetings and thanks for previously offered solutions, I am developing a package that makes use of C++ code, and I want to compile this code for testing reasons with the "R CMD SHLIB" command. Using Ubuntu and gcc 5.4, and because for certain reasons I have to use the c++0x standard, I try the following command: > MAKEFLAGS='CXXFLAGS=-std=c++0x -lpthread -O2' R CMD SHLIB MyMainCode.cpp For some weird reason, flag -O2 is not recognized properly and I get the following error message: > make: *** unknown output-sync type '2'. Stop. If I try -O3, I get "unknown output-sync type '3' ", and so on. Everything works fine if I drop this optimization flag. Could you suggest a workaround for that? thanks in advance, --Constantinos [[alternative HTML version deleted]] __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Weird MAKEFLAGS bug
On 10 January 2017 at 11:55, Costas Tsirogiannis wrote: | Greetings and thanks for previously offered solutions, | | I am developing a package that makes use of C++ code, and I want to compile | this code for testing reasons with the "R CMD SHLIB" command. Using Ubuntu | and gcc 5.4, and because for certain reasons I have to use the c++0x | standard, I try the following command: | | > MAKEFLAGS='CXXFLAGS=-std=c++0x -lpthread -O2' R CMD SHLIB MyMainCode.cpp | | For some weird reason, flag -O2 is not recognized properly and I get the | following error message: | | > make: *** unknown output-sync type '2'. Stop. | | If I try -O3, I get "unknown output-sync type '3' ", and so on. Everything | works fine if I drop this optimization flag. Could you suggest a workaround | for that? Sounds weird. Wonder if something else could go on here. But in general, using ~/.R/Makevars is better. Try that. edd@max:~$ grep FLAGS ~/.R/Makevars | grep -v "^#" CFLAGS += -O3 -Wall -pipe -pedantic -std=gnu99 CXXFLAGS += -O3 -Wall -pipe -Wno-unused -pedantic FFLAGS += -O3 -g0 -Wall -pipe FCFLAGS += -O3 -g0 -Wall -pipe CXX1XFLAGS=-O3 -Wall -pipe -Wno-unused -pedantic FLAGS=-Wall -O3 DYLIB_LDFLAGS = -Wl,-S -shared -fopenmp# $(CFLAGS) $(CPICFLAGS) SHLIB_CXXLDFLAGS = -Wl,-S -shared SHLIB_CXX1XLDFLAGS = -Wl,-S -shared SHLIB_FCLDFLAGS = -Wl,-S -shared SHLIB_LDFLAGS = -Wl,-S -shared# $(CFLAGS) $(CPICFLAGS) edd@max:~$ Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Weird MAKEFLAGS bug
Thanks a lot, indeed it worked using the Makevars file. I still do not understand why the command-line input fails but so be it. One more quick question: if I include the Makevars file in my package code then the requested flags are used every time somebody installs my package in his system. However, -O2 is a gcc-specific flag so it won't work for every compiler. Is there a simple way to declare another optimization flag in Makevars, that works for all compilers? Thanks for all the help, --Constantinos On 10 January 2017 at 12:39, Dirk Eddelbuettel wrote: > > On 10 January 2017 at 11:55, Costas Tsirogiannis wrote: > | Greetings and thanks for previously offered solutions, > | > | I am developing a package that makes use of C++ code, and I want to > compile > | this code for testing reasons with the "R CMD SHLIB" command. Using > Ubuntu > | and gcc 5.4, and because for certain reasons I have to use the c++0x > | standard, I try the following command: > | > | > MAKEFLAGS='CXXFLAGS=-std=c++0x -lpthread -O2' R CMD SHLIB > MyMainCode.cpp > | > | For some weird reason, flag -O2 is not recognized properly and I get the > | following error message: > | > | > make: *** unknown output-sync type '2'. Stop. > | > | If I try -O3, I get "unknown output-sync type '3' ", and so on. > Everything > | works fine if I drop this optimization flag. Could you suggest a > workaround > | for that? > > Sounds weird. Wonder if something else could go on here. > > But in general, using ~/.R/Makevars is better. Try that. > > edd@max:~$ grep FLAGS ~/.R/Makevars | grep -v "^#" > CFLAGS += -O3 -Wall -pipe -pedantic -std=gnu99 > CXXFLAGS += -O3 -Wall -pipe -Wno-unused -pedantic > FFLAGS += -O3 -g0 -Wall -pipe > FCFLAGS += -O3 -g0 -Wall -pipe > CXX1XFLAGS=-O3 -Wall -pipe -Wno-unused -pedantic > FLAGS=-Wall -O3 > DYLIB_LDFLAGS = -Wl,-S -shared -fopenmp# $(CFLAGS) $(CPICFLAGS) > SHLIB_CXXLDFLAGS = -Wl,-S -shared > SHLIB_CXX1XLDFLAGS = -Wl,-S -shared > SHLIB_FCLDFLAGS = -Wl,-S -shared > SHLIB_LDFLAGS = -Wl,-S -shared# $(CFLAGS) $(CPICFLAGS) > edd@max:~$ > > Dirk > > -- > http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org > [[alternative HTML version deleted]] __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Weird MAKEFLAGS bug
MAKEFLAGS='CXXFLAGS=-std=c++0x -O2' R CMD SHLIB passes two items, 'CXXFLAGS=-std=c++0x' and '-O2', not the single item 'CXXFLAG=-std=c++0x -O2', to make. Suitably recent versions of GNU make take the make argument -O2 to control the 'output-sync'. Bill Dunlap TIBCO Software wdunlap tibco.com On Tue, Jan 10, 2017 at 12:39 PM, Costas Tsirogiannis wrote: > Thanks a lot, indeed it worked using the Makevars file. I still do not > understand why the command-line input fails but so be it. > > One more quick question: if I include the Makevars file in my package code > then the requested flags are used every time somebody installs my package > in his system. However, -O2 is a gcc-specific flag so it won't work for > every compiler. Is there a simple way to declare another optimization flag > in Makevars, that works for all compilers? > > Thanks for all the help, > > --Constantinos > > On 10 January 2017 at 12:39, Dirk Eddelbuettel wrote: > >> >> On 10 January 2017 at 11:55, Costas Tsirogiannis wrote: >> | Greetings and thanks for previously offered solutions, >> | >> | I am developing a package that makes use of C++ code, and I want to >> compile >> | this code for testing reasons with the "R CMD SHLIB" command. Using >> Ubuntu >> | and gcc 5.4, and because for certain reasons I have to use the c++0x >> | standard, I try the following command: >> | >> | > MAKEFLAGS='CXXFLAGS=-std=c++0x -lpthread -O2' R CMD SHLIB >> MyMainCode.cpp >> | >> | For some weird reason, flag -O2 is not recognized properly and I get the >> | following error message: >> | >> | > make: *** unknown output-sync type '2'. Stop. >> | >> | If I try -O3, I get "unknown output-sync type '3' ", and so on. >> Everything >> | works fine if I drop this optimization flag. Could you suggest a >> workaround >> | for that? >> >> Sounds weird. Wonder if something else could go on here. >> >> But in general, using ~/.R/Makevars is better. Try that. >> >> edd@max:~$ grep FLAGS ~/.R/Makevars | grep -v "^#" >> CFLAGS += -O3 -Wall -pipe -pedantic -std=gnu99 >> CXXFLAGS += -O3 -Wall -pipe -Wno-unused -pedantic >> FFLAGS += -O3 -g0 -Wall -pipe >> FCFLAGS += -O3 -g0 -Wall -pipe >> CXX1XFLAGS=-O3 -Wall -pipe -Wno-unused -pedantic >> FLAGS=-Wall -O3 >> DYLIB_LDFLAGS = -Wl,-S -shared -fopenmp# $(CFLAGS) $(CPICFLAGS) >> SHLIB_CXXLDFLAGS = -Wl,-S -shared >> SHLIB_CXX1XLDFLAGS = -Wl,-S -shared >> SHLIB_FCLDFLAGS = -Wl,-S -shared >> SHLIB_LDFLAGS = -Wl,-S -shared# $(CFLAGS) $(CPICFLAGS) >> edd@max:~$ >> >> Dirk >> >> -- >> http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org >> > > [[alternative HTML version deleted]] > > __ > R-package-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-package-devel __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel