[pacman-dev] [PATCH] makepkg: Add CPPFLAGS support
Add CPPFLAGS support in addition to the current CFLAGS and CXXFLAGS. This keeps compiler flags split up in the same logical way done everywhere else. Signed-off-by: Allan McRae <allan@archlinux.org> --- This will allow a certian disrtibution to put -D_FORTIFY_SOURCE where it should be... doc/PKGBUILD.5.txt | 8 ++++---- doc/makepkg.conf.5.txt | 3 +++ etc/makepkg.conf.in | 1 + scripts/makepkg.sh.in | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt index eefdbd4..384af7c 100644 --- a/doc/PKGBUILD.5.txt +++ b/doc/PKGBUILD.5.txt @@ -254,10 +254,10 @@ A normal sync or upgrade will not use its value. with distcc. *buildflags*;; - Allow the use of user-specific buildflags (CFLAGS, CXXFLAGS, LDFLAGS) - during build as specified in linkman:makepkg.conf[5]. More useful in - its negative form `!buildflags` with select packages that have problems - building with custom buildflags. + Allow the use of user-specific buildflags (CPPFLAGS, CFLAGS, CXXFLAGS, + LDFLAGS) during build as specified in linkman:makepkg.conf[5]. More + useful in its negative form `!buildflags` with select packages that + have problems building with custom buildflags. *makeflags*;; Allow the use of user-specific makeflags during build as specified diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index 5970946..de2b4b4 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -51,6 +51,9 @@ Options A string such as ``i686-pc-linux-gnu'', do not touch unless you know what you are doing. This can be commented out by most users if desired. +**CPPFLAGS=**"cppflags":: + Flags used for the C preprocessor; see CFLAGS for more info. + **CFLAGS=**"cflags":: Flags used for the C compiler. This is a key part to the use of makepkg. Usually several options are specified, and the most common string resembles diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in index d8117a3..51df493 100644 --- a/etc/makepkg.conf.in +++ b/etc/makepkg.conf.in @@ -27,6 +27,7 @@ CARCH="@CARCH@" CHOST="@CHOST@" #-- Compiler and Linker Flags +#CPPFLAGS="" #CFLAGS="-O2 -pipe" #CXXFLAGS="-O2 -pipe" #LDFLAGS="" diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index d36dbd6..c7baa97 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -955,7 +955,7 @@ run_function() { # clear user-specified buildflags if requested if check_option "buildflags" "n"; then - unset CFLAGS CXXFLAGS LDFLAGS + unset CPPFLAGS CFLAGS CXXFLAGS LDFLAGS fi # clear user-specified makeflags if requested @@ -967,7 +967,7 @@ run_function() { cd_safe "$srcdir" # ensure all necessary build variables are exported - export CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST + export CPPFLAGS CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST # save our shell options so pkgfunc() can't override what we need local shellopts=$(shopt -p) -- 1.7.10.1
On Tue, May 8, 2012 at 1:05 AM, Allan McRae <allan@archlinux.org> wrote:
Add CPPFLAGS support in addition to the current CFLAGS and CXXFLAGS. This keeps compiler flags split up in the same logical way done everywhere else. +1
Signed-off-by: Allan McRae <allan@archlinux.org> ---
This will allow a certian disrtibution to put -D_FORTIFY_SOURCE where
"certain distribution" :P
it should be...
doc/PKGBUILD.5.txt | 8 ++++---- doc/makepkg.conf.5.txt | 3 +++ etc/makepkg.conf.in | 1 + scripts/makepkg.sh.in | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt index eefdbd4..384af7c 100644 --- a/doc/PKGBUILD.5.txt +++ b/doc/PKGBUILD.5.txt @@ -254,10 +254,10 @@ A normal sync or upgrade will not use its value. with distcc.
*buildflags*;; - Allow the use of user-specific buildflags (CFLAGS, CXXFLAGS, LDFLAGS) - during build as specified in linkman:makepkg.conf[5]. More useful in - its negative form `!buildflags` with select packages that have problems - building with custom buildflags. + Allow the use of user-specific buildflags (CPPFLAGS, CFLAGS, CXXFLAGS, + LDFLAGS) during build as specified in linkman:makepkg.conf[5]. More + useful in its negative form `!buildflags` with select packages that + have problems building with custom buildflags.
*makeflags*;; Allow the use of user-specific makeflags during build as specified diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index 5970946..de2b4b4 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -51,6 +51,9 @@ Options A string such as ``i686-pc-linux-gnu'', do not touch unless you know what you are doing. This can be commented out by most users if desired.
+**CPPFLAGS=**"cppflags":: + Flags used for the C preprocessor; see CFLAGS for more info. + **CFLAGS=**"cflags":: Flags used for the C compiler. This is a key part to the use of makepkg. Usually several options are specified, and the most common string resembles The organization/readability of this is getting kinda crappy. CPPFLAGS refers down, CXXFLAGS refers up, etc. Also, where the heck did this "key part to the user of makepkg" come from? That seems a bit overzealous.
We may just want to stop trying to do too much here and say "read the documentation of your C compiler for more info." (or C++ in the CXX case).
diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in index d8117a3..51df493 100644 --- a/etc/makepkg.conf.in +++ b/etc/makepkg.conf.in @@ -27,6 +27,7 @@ CARCH="@CARCH@" CHOST="@CHOST@"
#-- Compiler and Linker Flags +#CPPFLAGS="" #CFLAGS="-O2 -pipe" #CXXFLAGS="-O2 -pipe" #LDFLAGS="" diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index d36dbd6..c7baa97 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -955,7 +955,7 @@ run_function() {
# clear user-specified buildflags if requested if check_option "buildflags" "n"; then - unset CFLAGS CXXFLAGS LDFLAGS + unset CPPFLAGS CFLAGS CXXFLAGS LDFLAGS fi
# clear user-specified makeflags if requested @@ -967,7 +967,7 @@ run_function() { cd_safe "$srcdir"
# ensure all necessary build variables are exported - export CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST + export CPPFLAGS CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST # save our shell options so pkgfunc() can't override what we need local shellopts=$(shopt -p)
-- 1.7.10.1
On Tue, May 08, 2012 at 09:11:55AM -0500, Dan McGee wrote:
On Tue, May 8, 2012 at 1:05 AM, Allan McRae <allan@archlinux.org> wrote:
Add CPPFLAGS support in addition to the current CFLAGS and CXXFLAGS. This keeps compiler flags split up in the same logical way done everywhere else. +1
Signed-off-by: Allan McRae <allan@archlinux.org> ---
This will allow a certian disrtibution to put -D_FORTIFY_SOURCE where
"certain distribution" :P
it should be...
doc/PKGBUILD.5.txt | 8 ++++---- doc/makepkg.conf.5.txt | 3 +++ etc/makepkg.conf.in | 1 + scripts/makepkg.sh.in | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt index eefdbd4..384af7c 100644 --- a/doc/PKGBUILD.5.txt +++ b/doc/PKGBUILD.5.txt @@ -254,10 +254,10 @@ A normal sync or upgrade will not use its value. with distcc.
*buildflags*;; - Allow the use of user-specific buildflags (CFLAGS, CXXFLAGS, LDFLAGS) - during build as specified in linkman:makepkg.conf[5]. More useful in - its negative form `!buildflags` with select packages that have problems - building with custom buildflags. + Allow the use of user-specific buildflags (CPPFLAGS, CFLAGS, CXXFLAGS, + LDFLAGS) during build as specified in linkman:makepkg.conf[5]. More + useful in its negative form `!buildflags` with select packages that + have problems building with custom buildflags.
*makeflags*;; Allow the use of user-specific makeflags during build as specified diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index 5970946..de2b4b4 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -51,6 +51,9 @@ Options A string such as ``i686-pc-linux-gnu'', do not touch unless you know what you are doing. This can be commented out by most users if desired.
+**CPPFLAGS=**"cppflags":: + Flags used for the C preprocessor; see CFLAGS for more info. + **CFLAGS=**"cflags":: Flags used for the C compiler. This is a key part to the use of makepkg. Usually several options are specified, and the most common string resembles The organization/readability of this is getting kinda crappy. CPPFLAGS refers down, CXXFLAGS refers up, etc. Also, where the heck did this "key part to the user of makepkg" come from? That seems a bit overzealous.
We may just want to stop trying to do too much here and say "read the documentation of your C compiler for more info." (or C++ in the CXX case).
Nitpicking, but CFLAGS and such are an artifact of make, not the compiler. Sadly, neither gcc(1) or make(1) mention any of these. make(1p) mentions _some_ of these without ever really explaining what purpose they serve. I'm all for cleaning this up and saying "look at X for more detail", but we need to actually have an X for people to look at.
diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in index d8117a3..51df493 100644 --- a/etc/makepkg.conf.in +++ b/etc/makepkg.conf.in @@ -27,6 +27,7 @@ CARCH="@CARCH@" CHOST="@CHOST@"
#-- Compiler and Linker Flags +#CPPFLAGS="" #CFLAGS="-O2 -pipe" #CXXFLAGS="-O2 -pipe" #LDFLAGS="" diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index d36dbd6..c7baa97 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -955,7 +955,7 @@ run_function() {
# clear user-specified buildflags if requested if check_option "buildflags" "n"; then - unset CFLAGS CXXFLAGS LDFLAGS + unset CPPFLAGS CFLAGS CXXFLAGS LDFLAGS fi
# clear user-specified makeflags if requested @@ -967,7 +967,7 @@ run_function() { cd_safe "$srcdir"
# ensure all necessary build variables are exported - export CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST + export CPPFLAGS CFLAGS CXXFLAGS LDFLAGS MAKEFLAGS CHOST # save our shell options so pkgfunc() can't override what we need local shellopts=$(shopt -p)
-- 1.7.10.1
On 09/05/12 00:34, Dave Reisner wrote:
On Tue, May 08, 2012 at 09:11:55AM -0500, Dan McGee wrote:
On Tue, May 8, 2012 at 1:05 AM, Allan McRae <allan@archlinux.org> wrote:
Add CPPFLAGS support in addition to the current CFLAGS and CXXFLAGS. This keeps compiler flags split up in the same logical way done everywhere else. +1
Signed-off-by: Allan McRae <allan@archlinux.org> ---
This will allow a certian disrtibution to put -D_FORTIFY_SOURCE where
"certain distribution" :P
it should be...
doc/PKGBUILD.5.txt | 8 ++++---- doc/makepkg.conf.5.txt | 3 +++ etc/makepkg.conf.in | 1 + scripts/makepkg.sh.in | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt index eefdbd4..384af7c 100644 --- a/doc/PKGBUILD.5.txt +++ b/doc/PKGBUILD.5.txt @@ -254,10 +254,10 @@ A normal sync or upgrade will not use its value. with distcc.
*buildflags*;; - Allow the use of user-specific buildflags (CFLAGS, CXXFLAGS, LDFLAGS) - during build as specified in linkman:makepkg.conf[5]. More useful in - its negative form `!buildflags` with select packages that have problems - building with custom buildflags. + Allow the use of user-specific buildflags (CPPFLAGS, CFLAGS, CXXFLAGS, + LDFLAGS) during build as specified in linkman:makepkg.conf[5]. More + useful in its negative form `!buildflags` with select packages that + have problems building with custom buildflags.
*makeflags*;; Allow the use of user-specific makeflags during build as specified diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index 5970946..de2b4b4 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -51,6 +51,9 @@ Options A string such as ``i686-pc-linux-gnu'', do not touch unless you know what you are doing. This can be commented out by most users if desired.
+**CPPFLAGS=**"cppflags":: + Flags used for the C preprocessor; see CFLAGS for more info. + **CFLAGS=**"cflags":: Flags used for the C compiler. This is a key part to the use of makepkg. Usually several options are specified, and the most common string resembles The organization/readability of this is getting kinda crappy. CPPFLAGS refers down, CXXFLAGS refers up, etc. Also, where the heck did this "key part to the user of makepkg" come from? That seems a bit overzealous.
We may just want to stop trying to do too much here and say "read the documentation of your C compiler for more info." (or C++ in the CXX case).
Nitpicking, but CFLAGS and such are an artifact of make, not the compiler. Sadly, neither gcc(1) or make(1) mention any of these. make(1p) mentions _some_ of these without ever really explaining what purpose they serve. I'm all for cleaning this up and saying "look at X for more detail", but we need to actually have an X for people to look at.
X == google???
participants (3)
-
Allan McRae
-
Dan McGee
-
Dave Reisner