You are not logged in.

#1 2010-10-29 02:29:06

machoo02
Member
Registered: 2009-02-22
Posts: 35

makepkg not passing CXXFLAGS

I recently installed genepop (a population genetics software), and I saw something curious. There are very few source files for this program, and the build/compile step is simple:

g++ -v -DNO_MODULES -o genepop GenepopS.cpp

However, it does not seem as if the CXXFLAGS specified in /etc/makepkg.conf are being passed here.

/etc/makepkg.conf:

#-- Exclusive: will only run on i686
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="-march=native -mtune=native -O2 -pipe -mfpmath=sse"
CXXFLAGS="-march=native -mtune=native -O2 -pipe -mfpmath=sse"
LDFLAGS="-Wl,--hash-style=gnu -Wl,--as-needed"
#

Output during build step:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ../configure --prefix=/usr --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-gnu-unique-object --enable-lto --enable-plugin --disable-multilib --disable-libstdcxx-pch --with-system-zlib --with-ppl --with-cloog --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
Thread model: posix
gcc version 4.5.1 (GCC) 
COLLECT_GCC_OPTIONS='-v' '-DNO_MODULES' '-o' 'genepop' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro'
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/cc1plus -quiet -v -D_GNU_SOURCE -DNO_MODULES GenepopS.cpp -quiet -dumpbase GenepopS.cpp -mtune=generic -march=pentiumpro -auxbase GenepopS -version -o /tmp/ccPw9M6D.s
GNU C++ (GCC) version 4.5.1 (i686-pc-linux-gnu)
    compiled by GNU C version 4.5.1, GMP version 5.0.1, MPFR version 3.0.0-p3, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/i686-pc-linux-gnu
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/backward
 /usr/local/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/include-fixed
 /usr/include
End of search list.
GNU C++ (GCC) version 4.5.1 (i686-pc-linux-gnu)
    compiled by GNU C version 4.5.1, GMP version 5.0.1, MPFR version 3.0.0-p3, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 09c286d6478a532084f45ddd675021da
COLLECT_GCC_OPTIONS='-v' '-DNO_MODULES' '-o' 'genepop' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro'
 as -V -Qy --32 -o /tmp/cce7St6v.o /tmp/ccPw9M6D.s
GNU assembler version 2.20.1 (i686-pc-linux-gnu) using BFD version (GNU Binutils) 2.20.1.20100521
COMPILER_PATH=/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/:/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/:/usr/lib/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/:/usr/lib/gcc/i686-pc-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/:/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-DNO_MODULES' '-o' 'genepop' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro'
 /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/collect2 --eh-frame-hdr -m elf_i386 --hash-style=both -dynamic-linker /lib/ld-linux.so.2 -o genepop /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../crt1.o /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../crti.o /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/crtbegin.o -L/usr/lib/gcc/i686-pc-linux-gnu/4.5.1 -L/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../.. /tmp/cce7St6v.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/crtend.o /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../crtn.o

So, why would the flags in /etc/makepkg.conf not be respected here?

Last edited by machoo02 (2010-10-29 02:30:16)

Offline

#2 2010-10-29 02:37:09

Allan
Pacman
From: Brisbane, AU
Registered: 2007-06-09
Posts: 11,459
Website

Re: makepkg not passing CXXFLAGS

Crappy PKGBUILD:

Change:

  g++ -v -DNO_MODULES -o genepop GenepopS.cpp

to

  g++ $CXXFLAGS -v -DNO_MODULES -o genepop GenepopS.cpp

Offline

#3 2010-10-29 11:36:25

machoo02
Member
Registered: 2009-02-22
Posts: 35

Re: makepkg not passing CXXFLAGS

Allan,

I will do that, but perhaps you could explain the reasoning a little bit. Why would $CXXFLAGS be passed successfully to a make/make install step found in most PKGBUILDs, but not directly to g++ in this case?

Offline

#4 2010-10-29 11:43:58

Allan
Pacman
From: Brisbane, AU
Registered: 2007-06-09
Posts: 11,459
Website

Re: makepkg not passing CXXFLAGS

Most makefiles check environmental values for CXXFLAGS etc.

Offline

#5 2010-10-29 12:01:26

machoo02
Member
Registered: 2009-02-22
Posts: 35

Re: makepkg not passing CXXFLAGS

Ok...that makes sense. Thanks for the explanation!

Offline

Board footer

Powered by FluxBB