From: Sam S. <sd...@po...> - 2006-06-19 15:10:03
|
> * Bruno Haible <un...@hf...g> [2006-05-15 17:51:57 +0000]: > > Update of /cvsroot/clisp/clisp/src > In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv19790 > > Modified Files: > makemake.in ChangeLog > Log Message: > Don't ignore CFLAGS given by the user. I am not sure this is such a grand idea. CLISP needs a very specific set of CC options, just watch the complex logic in makemake.in, setting -O1 and various -f* on different platforms. User CFLAGS will often be wrong. Also, as was discovered by Yaroslav in <http://article.gmane.org/gmane.lisp.clisp.devel:15675>, AC_PROG_CC sets CFLAGS to "-g -O2" when it is not set by the user, so, by default CLISP is now built with "-g". This means that the default CLISP binaries are now much larger than they were before. This will be an unpleasant surprise for binary packagers. (Although it _is_ and unexpected boon to me personally, because now I may not necessarily need a separate debug build directory for all 10 sf cf platforms). A solution to the problem of size would be to use strip before install/distrib - but pass an option to get rid of debugging information while keeping symbols for disassemble. this means that we need: linux&*bsd: "strip -g" solaris: "strip -x" osx: "strip -S" who knows what hpux or aix uses? And this does not address the more important problem of CLISP requiring a non-trivial option tweaking! So, is this patch really a good idea? > Index: makemake.in > =================================================================== > RCS file: /cvsroot/clisp/clisp/src/makemake.in,v > retrieving revision 1.651 > retrieving revision 1.652 > diff -u -d -r1.651 -r1.652 > --- makemake.in 15 May 2006 14:51:31 -0000 1.651 > +++ makemake.in 15 May 2006 17:51:55 -0000 1.652 > @@ -506,6 +506,7 @@ > CC="@CC@" # either 'gcc -O' or 'cc' > CPP="@CPP@" # either $CC' -E' or '/lib/cpp' > CPPFLAGS='@CPPFLAGS@' # additional options for $CC and $CPP > + CFLAGS='@CFLAGS@' # additional options for $CC > LDFLAGS='@LDFLAGS@' # additional options for linking > CC_GCC='@CC_GCC@' # either true or false > CC_CPLUSPLUS='@CC_CPLUSPLUS@' # either true or false > @@ -567,6 +568,7 @@ > fi > CC_CPLUSPLUS=false > CPPFLAGS='' > + CFLAGS='' > CLFLAGS='' > if [ $TSYS = win32msvc ] ; then > CC='cl' > @@ -612,6 +614,7 @@ > XCC="gcc-${TSYS}" > XCPP="${XCC} -E" > XCPPFLAGS='' > + XCFLAGS='' > XLDFLAGS='' > XCC_GCC=true > XCC_NEED_CCPAUX=false > @@ -622,6 +625,7 @@ > XCC="${CC}" > XCPP="${CPP}" > XCPPFLAGS="${CPPFLAGS}" > + XCFLAGS="${CFLAGS}" > XLDFLAGS="${LDFLAGS}" > XCC_GCC="${CC_GCC}" > XCC_NEED_CCPAUX="${CC_NEED_CCPAUX}" > @@ -1069,7 +1073,7 @@ > > if [ $XCC_GCC = true ] ; then > XCC_GCC_VERSION=`LC_ALL=C $XCC -v 2>&1 | grep version | sed -n -e '$p' | sed -e 's/.*version //g' -e 's/gcc //'` > - XCFLAGS='-W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type' > + XCFLAGS=${XCFLAGS}' -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type' > test ${CC_CPLUSPLUS} = false && XCFLAGS=${XCFLAGS}' -Wmissing-declarations' > if [ $CROSS = false ] ; then > case "$XCC_GCC_VERSION" in > @@ -1242,14 +1246,14 @@ > else > if [ $TSYS = sun4 -a -n "$XCC_SUNPRO" ] ; then > # SUNWspro cc flags: > - XCFLAGS='-xO3 -xstrconst' > + XCFLAGS=${XCFLAGS}' -xO3 -xstrconst' > else > if [ "$HSYSOS" = hp-ux -o $TSYS = sun4 ] ; then > # HP's HPPA compilers crash when optimizing. > # SUN's cc is buggy when optimizing spvw.d, even with only -O1. > XCFLAGS='' > else > - XCFLAGS='-O' > + XCFLAGS=${XCFLAGS}' -O' > fi > fi > fi > @@ -3382,7 +3386,7 @@ > # srcdir has to be passed to ./configure because it must be able to find > # src/build-aux/install-sh _AND_ also its own sources, thus we must > # point it to modules/... in the original source tree > -echotab "m=\`cd ${MODULESDIR_}\$@; pwd\`; if ${NEED_RECONFIGURE} ; then cd \$@ ; ( cache="'`'"echo \$@/ | sed -e 's,[^/][^/]*//*,../,g'"'`'"config.cache; if test -f \$\${cache} ; then . \$\${cache}; if test \"\$\${ac_cv_env_CC_set}\" = set; then CC=\"\$\${ac_cv_env_CC_value}\"; export CC; fi; ./configure --cache-file=\$\${cache} --srcdir=\$\$m \$(MODULE_CONFIGURE_FLAGS); else ./configure --srcdir=\$\$m \$(MODULE_CONFIGURE_FLAGS); fi ) ; fi" > +echotab "m=\`cd ${MODULESDIR_}\$@; pwd\`; if ${NEED_RECONFIGURE} ; then cd \$@ ; ( cache="'`'"echo \$@/ | sed -e 's,[^/][^/]*//*,../,g'"'`'"config.cache; if test -f \$\${cache} ; then . \$\${cache}; if test \"\$\${ac_cv_env_CC_set}\" = set; then CC=\"\$\${ac_cv_env_CC_value}\"; export CC; fi; if test \"\$\${ac_cv_env_CFLAGS_set}\" = set; then CFLAGS=\"\$\${ac_cv_env_CFLAGS_value}\"; export CFLAGS; fi; ./configure --cache-file=\$\${cache} --srcdir=\$\$m \$(MODULE_CONFIGURE_FLAGS); else ./configure --srcdir=\$\$m \$(MODULE_CONFIGURE_FLAGS); fi ) ; fi" > echotab "CLISP=\"${CLISP_}\" ; cd \$@ ; dots="'`'"echo \$@/ | sed -e 's,[^/][^/]*//*,../,g' -e 's,/\$\$,,g'"'`'" ; \$(MAKE) clisp-module CC=\"\$(CC)\" CPPFLAGS=\"\$(${MODULE_CPPFLAGS_VAR})\" CFLAGS=\"\$(${MODULE_CFLAGS_VAR})\" INCLUDES=\"\$\$dots\" CLFLAGS=\"\$(${MODULE_CLFLAGS_VAR})\" LIBS=\"\$(LIBS)\" RANLIB=\"\$(RANLIB)\" CLISP=\"\$\$CLISP -q\"" > echol > > > Index: ChangeLog > =================================================================== > RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v > retrieving revision 1.5308 > retrieving revision 1.5309 > diff -u -d -r1.5308 -r1.5309 > --- ChangeLog 15 May 2006 17:50:06 -0000 1.5308 > +++ ChangeLog 15 May 2006 17:51:55 -0000 1.5309 > @@ -1,3 +1,8 @@ > +2006-05-10 Bruno Haible <br...@cl...> > + > + * makemake.in: Respect the value of the environment variable CFLAGS > + given at configure time. > + > 2006-05-07 Bruno Haible <br...@cl...> > > * spvwtabf.d (subr_tab_data): Align correctly also when using the > > > -- Sam Steingold (http://www.podval.org/~sds) on Fedora Core release 5 (Bordeaux) http://honestreporting.com http://dhimmi.com http://mideasttruth.com http://iris.org.il http://thereligionofpeace.com http://palestinefacts.org UNIX is a way of thinking. Windows is a way of not thinking. |
From: Rex D. <rd...@ma...> - 2006-06-19 15:55:25
|
Sam Steingold wrote: >> * Bruno Haible <un...@hf...g> [2006-05-15 17:51:57 >> +0000]: >> >> Update of /cvsroot/clisp/clisp/src >> In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv19790 >> >> Modified Files: >> makemake.in ChangeLog >> Log Message: >> Don't ignore CFLAGS given by the user. > > I am not sure this is such a grand idea. > CLISP needs a very specific set of CC options, > just watch the complex logic in makemake.in, > setting -O1 and various -f* on different platforms. > User CFLAGS will often be wrong. then it's their own fault if their mods break something, isn't it? (: -- Rex |
From: Sam S. <sd...@po...> - 2006-06-19 16:08:17
|
> * Rex Dieter <eqvrgre@zngu.hay.rqh> [2006-06-19 10:36:54 -0500]: > > Sam Steingold wrote: > >>> * Bruno Haible <un...@hf...g> [2006-05-15 17:51:57 >>> +0000]: >>> >>> Update of /cvsroot/clisp/clisp/src >>> In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv19790 >>> >>> Modified Files: >>> makemake.in ChangeLog >>> Log Message: >>> Don't ignore CFLAGS given by the user. >> >> I am not sure this is such a grand idea. >> CLISP needs a very specific set of CC options, >> just watch the complex logic in makemake.in, >> setting -O1 and various -f* on different platforms. >> User CFLAGS will often be wrong. > > then it's their own fault if their mods break something, isn't it? (: if the user sets _nothing_, CFLAGS is set to "-g -O2" by AC_PROG_CC. just search src/makemake.in for "-O0" for examples when "-O2" is wrong. (note that "-O2 -O0" is equivalent to "-O0", so this is not really a problem). -- Sam Steingold (http://www.podval.org/~sds) on Fedora Core release 5 (Bordeaux) http://camera.org http://openvotingconsortium.org http://mideasttruth.com http://dhimmi.com http://thereligionofpeace.com http://palestinefacts.org A clear conscience is usually the sign of a bad memory. |
From: Bruno H. <br...@cl...> - 2006-06-20 19:43:02
|
Sam, > > Don't ignore CFLAGS given by the user. > > I am not sure this is such a grand idea. It is meant as a first step to more "GNU compatibility". The bug is reported in [ 1467976 ]. http://sourceforge.net/tracker/index.php?func=detail&aid=1467976&group_id=1355&atid=101355 Not only the configure calling convention needs to match the GNU standards, but also what we do with various variables, and which optimization defaults we use etc. > CLISP needs a very specific set of CC options, Yes. The patch I put in was to combine the user-given flags with our knowledge of what will work and what will not. It should be improved. I know it's not perfect. > just watch the complex logic in makemake.in, Btw, it would be time to ditch every special casing for gcc older than 2.95. > setting -O1 and various -f* on different platforms. > User CFLAGS will often be wrong. Yes. For example, if we know that gcc needs at most -O1, but not -O2, then makemake.in should append -O1 to the user's CFLAGS if the user supplied -O2 but not when he supplied -O0. I did not do this carefully in my patch. > Also, as was discovered by Yaroslav in > <http://article.gmane.org/gmane.lisp.clisp.devel:15675>, > AC_PROG_CC sets CFLAGS to "-g -O2" when it is not set by the user, > so, by default CLISP is now built with "-g". So clisp gets closer to what GNU does by default. I think this is good. > This means that the default CLISP binaries are now much larger than they > were before. This will be an unpleasant surprise for binary packagers. Binary packagers, from SuSE to OpenPKG, know how to avoid this -g. > A solution to the problem of size would be to use strip before > install/distrib - but pass an option to get rid of debugging information > while keeping symbols for disassemble. this means that we need: > linux&*bsd: "strip -g" > solaris: "strip -x" > osx: "strip -S" > who knows what hpux or aix uses? The binary packagers know it, and those familiar with their platform know it as well. The GNU standards say that stripped binaries should be installed only by "make install-strip", not by the normal "make install". > And this does not address the more important problem of CLISP requiring > a non-trivial option tweaking! The problem that my patch addresses is that if you know that you need special options on, say, s390, you can specify them at configure time. Previously it was necessary to sed-edit the src/Makefile after configure. The binary packagers know well how to specify options at configure time; they have a hard time editing a generated Makefile here and there. Bruno |
From: Sam S. <sd...@po...> - 2006-06-20 20:08:32
|
Bruno, > * Bruno Haible <oe...@py...t> [2006-06-20 21:40:56 +0200]: > >> > Don't ignore CFLAGS given by the user. >> >> I am not sure this is such a grand idea. > > It is meant as a first step to more "GNU compatibility". I thought so. > Not only the configure calling convention needs to match the GNU > standards, what options are incompatible (other than --build)? is it possible that the answer to this problem is to rewrite the top-level configure to be generated from a configure.in? -- Sam Steingold (http://www.podval.org/~sds) on Fedora Core release 5 (Bordeaux) http://camera.org http://pmw.org.il http://jihadwatch.org http://iris.org.il http://thereligionofpeace.com http://mideasttruth.com Bill Gates is not god and Microsoft is not heaven. |