commit 9444b8e4bc847f8fd9d02466976b962288cedf31 from: Russ Cox date: Mon May 18 00:15:41 2020 UTC 9c, 9l: accept CC9FLAGS from config Also, if CC9FLAGS includes -fsanitize=address (ASAN), predefine PLAN9PORT_ASAN for use by programs that need to know (mainly libthread). The 9c script used to have a variable called ngflags, which was ccflags except -g (ng stood for "no g"), but nothing needs it split out anymore, so simplify to just ccflags. commit - 154140a22b1c697f6a3edb3e5913efded1be082a commit + 9444b8e4bc847f8fd9d02466976b962288cedf31 blob - 320a1634c8d0885bbd5d514df95d674d5c55fe5c blob + dd89929333c94bcb86c4b7052446274df3aead9f --- bin/9c +++ bin/9c @@ -4,7 +4,7 @@ test -f $PLAN9/config && . $PLAN9/config usegcc() { cc=${CC9:-gcc} - ngflags=" \ + cflags=" \ -O2 \ -c \ -Wall \ @@ -24,7 +24,12 @@ usegcc() " # want to put -fno-optimize-sibling-calls here but # that option only works with gcc3+ it seems - cflags="$ngflags -ggdb" + cflags="$cflags -ggdb" + cflags="$cflags $CC9FLAGS" + case "$cflags" in + *sanitize=address*) + cflags="$cflags -DPLAN9PORT_ASAN" + esac } quiet() @@ -60,7 +65,7 @@ quiet() useclang() { cc=${CC9:-clang} - ngflags=" \ + cflags=" \ -O2 \ -c \ -Wall \ @@ -79,13 +84,19 @@ useclang() -fsigned-char \ -fno-caret-diagnostics \ " - cflags="$ngflags -g" + cflags="$cflags -g" + cflags="$cflags $CC9FLAGS" + + case "$cflags" in + *sanitize=address*) + cflags="$cflags -DPLAN9PORT_ASAN" + esac } usexlc() { cc=${CC9:-xlc_r} - ngflags=" \ + cflags=" \ -c \ -O0 \ -qmaxmem=-1 \ @@ -96,7 +107,8 @@ usexlc() -qsuppress=1506-1300 \ -qsuppress=1506-342 \ " - cflags="$ngflags -g -qfullpath" + cflags="$cflags -g -qfullpath" + cflags="$cflags $CC9FLAGS" } tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}-${CC9:-cc}" @@ -105,14 +117,14 @@ case "$tag" in *DragonFly*clang|*BSD*clang*) useclang ;; *Darwin-x86_64*) useclang - cflags="$ngflags -g3 -m64" + cflags="$cflags -g3 -m64" ;; *Darwin*clang*) useclang - cflags="$ngflags -g3 -m32" + cflags="$cflags -g3 -m32" ;; *Darwin*) usegcc - cflags="$ngflags -g3 -no-cpp-precomp -m32" ;; + cflags="$cflags -g3 -no-cpp-precomp -m32" ;; *HP-UX*) cc=${CC9:-cc}; cflags="-g -O -c -Ae" ;; *Linux*) usegcc case "${CC9:-gcc}" in @@ -134,11 +146,11 @@ case "$tag" in u=`uname` v=`uname -r` s=`echo $u$v | tr '. ' '__'` - cflags="$ngflags -g" + cflags="$cflags -g" cflags="$cflags -D__sun__ -D__${s}__" ;; *AIX*) usexlc - cflags="$ngflags -g -D__AIX__" + cflags="$cflags -g -D__AIX__" ;; *) echo 9c does not know how to compile on "$tag" 1>&2 blob - 398adbd8a823d397e2c866253b511ebb2b494435 blob + 875e103ab9776b8fefef19fb8a2e9095461f5258 --- bin/9l +++ bin/9l @@ -12,29 +12,29 @@ extralibs="-lm" tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}" case "$tag" in *DragonFly*|*BSD*) - ld=${CC9:-gcc} + ld="${CC9:-gcc} $CC9FLAGS" userpath=true extralibs="$extralibs -lutil" ;; *OSF1*) - ld=${CC9:-cc} + ld="${CC9:-cc} $CC9FLAGS" userpath=true extralibs="$extralibs -lutil" nmflags="-B" ;; *Linux*) - ld=${CC9:-gcc} + ld="${CC9:-gcc} $CC9FLAGS" userpath=true extralibs="$extralibs -lutil -lresolv -lpthread" ;; *Darwin*x86_64*) - ld="${CC9:-gcc} -m64" + ld="${CC9:-gcc} -m64 $CC9FLAGS" ;; *Darwin*) - ld="${CC9:-gcc} -m32" + ld="${CC9:-gcc} -m32 $CC9FLAGS" ;; *SunOS*) - ld="${CC9:-cc} -g" + ld="${CC9:-cc} -g $CC9FLAGS" extralibs="$extralibs -lrt -lpthread -lsocket -lnsl" # Record paths to shared libraries to avoid needing LD_LIBRARY_PATH for i in "$libsl $@" @@ -61,7 +61,7 @@ case "$tag" in esac ;; *AIX*) - ld="${CC9:-xlc_r} -g -O0" + ld="${CC9:-xlc_r} -g -O0 $CC9FLAGS" nmflags="-A -B" extralibs="$extralibs -lpthread" ;; blob - 8fcc9e4187924ed23f84873c731036ede3722e5f blob + 17411af26752688ab074c31466da68b293f83dc1 --- man/man1/install.1 +++ man/man1/install.1 @@ -89,6 +89,15 @@ If contains a line .B WSYSTYPE=nowsys then the system is built without using X11. +.B LOCAL.config +may also list settings for +.B CC9 +(the host C compiler) +and +.B CC9FLAGS +(any additional flags to pass to the compiler). +Values more complex than single words should be quoted +with single quotes. .PP On most Linux systems, the X11 header packages need to be installed to build using X11. On Debian. the required packages are