+#!/bin/sh
+
case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
'') ;;
[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
Intel*) ;; # # Is that you, Intel C++?
-*) for opt in -ansi -std=c89 -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat
+*) for opt in -ansi -std=c89 -W -Wextra -Wdeclaration-after-statement \
+ -Wendif-labels -Wc++-compat -Wwrite-strings
do
case " $ccflags " in
*" $opt "*) ;; # Skip if already there.
*) rm -f _cflags$_exe
- case "`$cc $cflags $warn $stdflags $opt _cflags.c -o _cflags$_exe 2>&1`" in
+ case "`$cc -DPERL_NO_INLINE_FUNCTIONS $cflags $warn $stdflags $opt _cflags.c -o _cflags$_exe 2>&1`" in
*"unrecognized"*) ;;
*"implicit declaration"*) ;; # Was something useful hidden?
*"Invalid"*) ;;
stdflags="$stdflags"
# Extra extra.
extra="$extra"
+# what do executables look like?
+_exe="$_exe"
!GROK!THIS!
: 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) ;;
- xsutils) ;;
*) ;;
+
+ *) : 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
-case "$cc" in
-*g++*)
- # Extra paranoia in case people have bad canned ccflags:
- # bad in the sense that the flags are accepted by g++,
- # but then whined about.
- for f in -Wdeclaration-after-statement -std=c89
- do
- ccflags=`echo $ccflags|sed 's/$f/ /'`
- done
- ;;
-esac
-cppflags=`echo $cppflags|sed 's/-Wdeclaration-after-statement/ /'`
-
-case "$cc" in
-*g++*)
- # Without -Wno-unused-variable g++ 4.x compiles are rather unwatchable
- # because of all the warnings about Perl___notused, and g++ doesn't do
- # __attribute__((unused)) (and even if at some stage it may, people do
- # have older gcc installations), and ((void)x) isn't enough to silence
- # the noises about XS functions not using their cv parameter, so we need
- # the -Wno-unused-parameter too.
- # Yes, we lose some valid warnings, but hopefully other compilers
- # (like gcc) will still pick up those warnings.
- for o in -Wno-unused-variable -Wno-unused-parameter
- do
- case "$warn" in
- *$o*) ;;
- *) warn="$warn $o" ;;
+ : 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:
+ # bad in the sense that the flags are accepted by g++,
+ # but then whined about.
+ for f in -Wdeclaration-after-statement -std=c89
+ do
+ ccflags=`echo $ccflags|sed 's/$f/ /'`
+ done
+ ;;
+ esac
+ cppflags=`echo $cppflags|sed 's/-Wdeclaration-after-statement/ /'`
+
+ case "$cc" in
+ *clang)
+ # clang complains a lot about -Wunused-value which are not fixable
+ warn="$warn -Wno-unused-value"
+ ;;
+ *g++*)
+ # Without -Wno-unused-variable g++ 4.x compiles are rather unwatchable
+ # because of all the warnings about Perl___notused, and g++ doesn't do
+ # __attribute__((unused)) (and even if at some stage it may, people do
+ # have older gcc installations), and ((void)x) isn't enough to silence
+ # the noises about XS functions not using their cv parameter, so we need
+ # the -Wno-unused-parameter too.
+ # Yes, we lose some valid warnings, but hopefully other compilers
+ # (like gcc) will still pick up those warnings.
+ for o in -Wno-unused-variable -Wno-unused-parameter
+ do
+ case "$warn" in
+ *$o*) ;;
+ *) warn="$warn $o" ;;
+ esac
+ done
+ ;;
esac
- done
- ;;
-esac
-if test -f .patch; then
- ccflags="-DPERL_PATCHNUM=`cat .patch` $ccflags"
-fi
: Can we perhaps use $ansi2knr here
echo "$cc -c -DPERL_CORE $ccflags $stdflags $optimize $warn $extra"
. $TOP/config.sh
+ # end per file behaviour
done
!NO!SUBS!
chmod 755 cflags