Index: flag-o-matic.eclass =================================================================== RCS file: /home/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v retrieving revision 1.22 diff -u -b -B -u -r1.22 flag-o-matic.eclass --- flag-o-matic.eclass 25 Jun 2003 19:27:33 -0000 1.22 +++ flag-o-matic.eclass 16 Jul 2003 19:24:45 -0000 @@ -3,13 +3,14 @@ # $Header: /home/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.22 2003/06/25 19:27:33 vapier Exp $ # # Author Bart Verwilst +# Support for ASFLAGS,LDFLAGS ECLASS=flag-o-matic INHERITED="$INHERITED $ECLASS" # #### filter-flags #### -# Remove particular flags from C[XX]FLAGS +# Remove particular flags from {C,CXX,AS,LD}FLAGS # Matches only complete flags # #### append-flags #### @@ -19,11 +20,11 @@ # Replace a flag by another one # #### is-flag #### -# Returns "true" if flag is set in C[XX]FLAGS +# Returns "true" if flag is set in {C,CXX,AS,LD}FLAGS # Matches only complete a flag # #### strip-flags #### -# Strip C[XX]FLAGS of everything except known +# Strip {C,CXX,AS,LD}FLAGS of everything except known # good options. # #### get-flag #### @@ -35,7 +36,7 @@ # -# C[XX]FLAGS that we allow in strip-flags +# {C[XX],AS,LD}FLAGS that we allow in strip-flags ALLOWED_FLAGS="-O -O1 -O2 -mcpu -march -mtune -fstack-protector -pipe -g" case "${ARCH}" in mips) ALLOWED_FLAGS="${ALLOWED_FLAGS} -mips1 -mips2 -mips3 -mips4 -mabi" ;; @@ -50,14 +51,26 @@ # out part of a flag ... we want flag atoms ! :D export CFLAGS=" ${CFLAGS} " export CXXFLAGS=" ${CXXFLAGS} " + export ASFLAGS=" ${ASFLAGS} " + export LDFLAGS=" ${LDFLAGS} " + for x in $@ ; do + if [ "${x}" == "-fPIC" ]; then + filter-flags -yet_dyn + fi export CFLAGS="${CFLAGS/ ${x} / }" export CXXFLAGS="${CXXFLAGS/ ${x} / }" + export ASFLAGS="${ASFLAGS/ ${x} / }" + export LDFLAGS="${LDFLAGS/ ${x} / }" done + export CFLAGS="${CFLAGS:1:${#CFLAGS}-2}" export CXXFLAGS="${CXXFLAGS:1:${#CXXFLAGS}-2}" + export ASFLAGS="${ASFLAGS:1:${#ASFLAGS}-2}" + export LDFLAGS="${LDFLAGS:1:${#LDFLAGS}-2}" } +# dont append {AS,LD}FLAGS here append-flags() { CFLAGS="${CFLAGS} $@" CXXFLAGS="${CXXFLAGS} $@" @@ -66,10 +79,12 @@ replace-flags() { CFLAGS="${CFLAGS/${1}/${2} }" CXXFLAGS="${CXXFLAGS/${1}/${2} }" + ASFLAGS="${ASFLAGS/${1}/${2} }" + LDFLAGS="${LDFLAGS/${1}/${2} }" } is-flag() { - for x in ${CFLAGS} ${CXXFLAGS} ; do + for x in ${CFLAGS} ${CXXFLAGS} ${ASFLAGS} ${LDFLAGS}; do if [ "${x}" == "$1" ] ; then echo true return 0 @@ -81,6 +96,8 @@ strip-flags() { local NEW_CFLAGS="" local NEW_CXXFLAGS="" + local NEW_ASFLAGS="" + local NEW_LDFLAGS="" # Allow unstable C[XX]FLAGS if we are using unstable profile ... if [ `has ~${ARCH} ${ACCEPT_KEYWORDS}` ] ; then @@ -90,46 +107,39 @@ set -f - for x in ${CFLAGS} - do - for y in ${ALLOWED_FLAGS} - do + for flagtype in {C,CXX,AS,LD}FLAGS; do + gflags="$(eval echo \$\{$flagtype\})" + for x in ${gflags}; do + for y in ${ALLOWED_FLAGS}; do flag=${x%%=*} if [ "${flag%%${y}}" = "" ] then - NEW_CFLAGS="${NEW_CFLAGS} ${x}" + z=$(eval echo \$\{NEW_${flagtype}\}) + NEW_${flagtype}="${z} ${x}" break fi done done - - for x in ${CXXFLAGS} - do - for y in ${ALLOWED_FLAGS} - do - flag=${x%%=*} - if [ "${flag%%${y}}" = "" ] - then - NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}" - break - fi - done done set +f [ `use debug` ] \ && einfo "CFLAGS=\"${NEW_CFLAGS}\"" \ - && einfo "CXXFLAGS=\"${NEW_CXXFLAGS}\"" + && einfo "CXXFLAGS=\"${NEW_CXXFLAGS}\"" \ + && einfo "ASLAGS=\"${NEW_ASFLAGS}\"" \ + && einfo "LDFLAGS=\"${NEW_LDFLAGS}\"" export CFLAGS="${NEW_CFLAGS}" export CXXFLAGS="${NEW_CXXFLAGS}" + export ASFLAGS="${NEW_ASFLAGS}" + export LDFLAGS="${NEW_LDFLAGS}" } get-flag() { local findflag="$1" - for f in ${CFLAGS} ${CXXFLAGS} ; do + for f in ${CFLAGS} ${CXXFLAGS} ${ASFLAGS} ${LDFLAGS}; do if [ "${f/${findflag}}" != "${f}" ] ; then echo "${f/-${findflag}=}" return