From 5729ffdda207fd02149cc5ed14dbfdce8c47cac3 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Wed, 28 Mar 2012 17:15:15 +0200 Subject: [PATCH] In cflags.SH trim the case statement of file basenames. Add examples showing how to use cflags.SH to tweak the compiler flags used for individual object files. Previously cflags.SH contained a somewhat stale pre-canned list of file basenames including removed files such as usersub (deleted before 5.000 shipped), and a partial list of 5.000 XS extensions. Whilst it's possible to generate the correct list in cflags by parsing MANIFEST (and adding a few fixups), it's still not actually *useful*, as cflags gets overwritten as soon as config.sh changes. Hence the most end-user useful solution with minimal maintenance is to eliminate the list entirely, and document how the user should add to it as necessary. --- INSTALL | 13 ++++++++++--- cflags.SH | 61 ++++++++++++++----------------------------------------------- 2 files changed, 24 insertions(+), 50 deletions(-) diff --git a/INSTALL b/INSTALL index 4d93d1f..333e809 100644 --- a/INSTALL +++ b/INSTALL @@ -1269,9 +1269,16 @@ lost. If you have any additional changes to make to the C compiler command line, they can be made in cflags.SH. For instance, to turn off the -optimizer on toke.c, find the line in the switch structure for -toke.c and put the command optimize='-g' before the ;; . You -should not edit the generated file cflags directly, as your changes will +optimizer on toke.c, find the switch structure marked 'or customize here', +and add a line for toke.c ahead of the catch-all *) so that it now reads: + + : or customize here + + case "$file" in + toke) optimize='-g' ;; + *) ;; + +You should not edit the generated file cflags directly, as your changes will be lost the next time you run Configure, or if you edit config.sh. To explore various ways of changing ccflags from within a hint file, diff --git a/cflags.SH b/cflags.SH index ac03b85..6420bf3 100755 --- a/cflags.SH +++ b/cflags.SH @@ -273,56 +273,23 @@ for file do : or customize here case "$file" in - DB_File) ;; - GDBM_File) ;; - NDBM_File) ;; - ODBM_File) ;; - POSIX) ;; - SDBM_File) ;; - av) ;; - byterun) ;; - deb) ;; - dl) ;; - doio) ;; - doop) ;; - dump) ;; - globals) ;; - gv) ;; - hv) ;; - locale) ;; - madly) ;; - main) ;; - malloc) ;; - mg) ;; - miniperlmain) ;; - numeric) ;; - op) ;; - opmini) ;; - pad) ;; - perl) ;; - perlapi) ;; - perlmain) ;; - perly) ;; - pp) ;; - pp_ctl) ;; - pp_hot) ;; - pp_pack) ;; - pp_sort) ;; - pp_sys) ;; - regcomp) ;; - regexec) ;; - run) ;; - scope) ;; - sv) ;; - taint) ;; - toke) ;; - universal) ;; - usersub) ;; - utf8) ;; - util) ;; *) ;; + + *) : Customization examples follow: ;; + av) ccflags=`echo $ccflags | sed -e s/-pipe//` ;; + deb) ccflags="$ccflags -fno-jump-tables" ;; + hv) warn=`echo $warn | sed -e s/-Wextra//` ;; + toke) optimize=-O0 ;; esac + : The examples are intentionally unreachable as the '*)' case always + : matches. To use them, move before the '*)' and edit as appropriate. + : It is not a good idea to set ccflags to an absolute value here, as it + : often contains general -D defines which are needed for correct + : compilation. It is better to edit ccflags as shown, using interpolation + : to add flags, or sed to remove flags. + + case "$cc" in *g++*) # Extra paranoia in case people have bad canned ccflags: -- 2.7.4