Split OPT make variable into OPT and BASECFLAGS. The latter contains those

compiler flags which are necessary to get a clean compile.  The former is
for user-specified optimizer, debug, trace fiddling.  See patch 640843.

Add /sw/lib and /sw/include to setup.py search paths on Darwin to take
advantage of fink goodies.

Add scriptsinstall target to Makefile to install certain scripts from
Tools/scripts directory.
This commit is contained in:
Skip Montanaro 2003-01-01 20:07:49 +00:00
parent dc392e3143
commit decc6a47df
5 changed files with 748 additions and 1452 deletions

View file

@ -54,7 +54,8 @@ MAKESETUP= $(srcdir)/Modules/makesetup
# Compiler options
OPT= @OPT@
CFLAGS= $(OPT)
BASECFLAGS= @BASECFLAGS@
CFLAGS= $(BASECFLAGS) $(OPT)
CPPFLAGS= -I. -I$(srcdir)/Include
LDFLAGS= @LDFLAGS@
LDLAST= @LDLAST@
@ -844,6 +845,13 @@ idleinstall:
--install-scripts=$(BINDIR) \
--install-platlib=$(DESTSHARED)
# This installs a few of the useful scripts in Tools/scripts
scriptsinstall:
SRCDIR=$(srcdir) \
./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \
--prefix=$(prefix) \
--install-scripts=$(BINDIR)
# Build the toplevel Makefile
Makefile.pre: Makefile.pre.in config.status
CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status

View file

@ -26,6 +26,24 @@ Tools/Demos
Build
-----
- On systems which build using the configure script, compiler flags which
used to be lumped together using the OPT flag have been split into two
groups, OPT and BASECFLAGS. OPT is meant to carry just optimization- and
debug-related flags like "-g" and "-O3". BASECFLAGS is meant to carry
compiler flags that are required to get a clean compile. On some
platforms (many Linux flavors in particular) BASECFLAGS will be empty by
default. On others, such as Mac OS X and SCO, it will contain required
flags. This change allows people building Python to override OPT without
fear of clobbering compiler flags which are required to get a clean build.
- On Darwin/Mac OS X platforms, /sw/lib and /sw/include are added to the
relevant search lists in setup.py. This allows users building Python to
take advantage of the many packages available from the fink project
<http://fink.sf.net/>.
- A new Makefile target, scriptsinstall, installs a number of useful scripts
from the Tools/scripts directory.
C API
-----

2042
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -168,6 +168,15 @@ fi
AC_MSG_RESULT($EXTRAPLATDIR)
# checks for alternative programs
# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
# for debug/optimization stuff. BASECFLAGS is for flags that are required
# just to get things to compile and link. Users are free to override OPT
# when running configure or make. The build should not break if they do.
# BASECFLAGS should generally not be messed with, however.
# XXX shouldn't some/most/all of this code be merged with the stuff later
# on that fiddles with OPT and BASECFLAGS?
AC_MSG_CHECKING(for --without-gcc)
AC_ARG_WITH(gcc,
AC_HELP_STRING(--without-gcc,never use gcc),
@ -188,13 +197,14 @@ AC_ARG_WITH(gcc,
ppc)
CC=mwcc
without_gcc=yes
OPT="-O -export pragma"
BASECFLAGS="$BASECFLAGS -export pragma"
OPT="$OPT -O"
LDFLAGS="$LDFLAGS -nodup"
;;
x86)
CC=gcc
without_gcc=no
OPT=-O
OPT="$OPT -O"
;;
*)
AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
@ -484,7 +494,7 @@ if test $enable_shared = "yes"; then
case $MACHDEP in
dguxR4)
LDLIBRARY='libpython$(VERSION).so'
OPT="$OPT -pic"
BASECFLAGS="$BASECFLAGS -pic"
;;
esac
fi
@ -531,13 +541,27 @@ else AC_MSG_RESULT(no); Py_DEBUG='false'
fi],
[AC_MSG_RESULT(no)])
# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
# merged with this chunk of code?
# Optimizer/debugger flags
# ------------------------
# (The following bit of code is complicated enough - please keep things
# indented properly. Just pretend you're editing Python code. ;-)
# There are two parallel sets of case statements below, one that checks to
# see if OPT was set and one that does BASECFLAGS setting based upon
# compiler and platform. BASECFLAGS tweaks need to be made even if the
# user set OPT.
# tweak OPT based on compiler and platform, only if the user didn't set
# it on the command line
AC_SUBST(OPT)
if test -z "$OPT"
then
case $GCC in
yes)
case $ac_cv_prog_cc_g in
case $GCC in
yes)
case $ac_cv_prog_cc_g in
yes)
if test "$Py_DEBUG" = 'true' ; then
# Optimization messes up debuggers, so turn it off for
@ -545,45 +569,69 @@ then
OPT="-g -Wall -Wstrict-prototypes"
else
OPT="-g -O3 -Wall -Wstrict-prototypes"
fi;;
fi
;;
*)
OPT="-O3 -Wall -Wstrict-prototypes";;
OPT="-O3 -Wall -Wstrict-prototypes"
;;
esac
case $ac_sys_system in
SCO_SV*) OPT="$OPT -m486 -DSCO5";;
esac
SCO_SV*) OPT="$OPT -m486 -DSCO5"
;;
esac
;;
*)
case $ac_sys_system in
OpenUNIX*|UnixWare*)
OPT="-O -K pentium,host,inline,loop_unroll,alloca ";;
SCO_SV*)
CFLAGS="$CFLAGS -belf"
OPT="-belf -O -Ki486 -DSCO5";;
*)
OPT="-O";;
esac
OPT="-O"
;;
esac
# The current (beta) Monterey compiler dies with optimizations
# XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
case $ac_sys_system in
Darwin*)
OPT="$OPT -Wno-long-double -no-cpp-precomp";;
Monterey*)
OPT=""
;;
esac
fi
AC_SUBST(BASECFLAGS)
# tweak BASECFLAGS based on compiler and platform
case $GCC in
yes)
case $ac_sys_system in
SCO_SV*)
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
;;
# is there any other compiler on Darwin besides gcc?
Darwin*)
BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp"
;;
esac
;;
*)
case $ac_sys_system in
OpenUNIX*|UnixWare*)
BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
;;
SCO_SV*)
BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
;;
esac
;;
esac
if test "$Py_DEBUG" = 'true'; then
:
else
OPT="-DNDEBUG $OPT"
fi
# The current (beta) Monterey compiler dies with optimizations
case $ac_sys_system in
Monterey*) OPT="";;
esac
if test "$ac_arch_flags"
then
OPT="$OPT $ac_arch_flags"
BASECFLAGS="$BASECFLAGS $ac_arch_flags"
fi
AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
@ -598,8 +646,14 @@ CC="$ac_save_cc"])
AC_MSG_RESULT($ac_cv_opt_olimit_ok)
if test $ac_cv_opt_olimit_ok = yes; then
case $ac_sys_system in
Darwin*) OPT="$OPT" ;;
*) OPT="$OPT -OPT:Olimit=0";;
# XXX is this branch needed? On MacOSX 10.2.2 the result of the
# olimit_ok test is "no". Is it "yes" in some other Darwin-esque
# environment?
Darwin*)
;;
*)
BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
;;
esac
else
AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
@ -613,7 +667,7 @@ else
CC="$ac_save_cc"])
AC_MSG_RESULT($ac_cv_olimit_ok)
if test $ac_cv_olimit_ok = yes; then
OPT="$OPT -Olimit 1500"
BASECFLAGS="$BASECFLAGS -Olimit 1500"
fi
fi
@ -939,7 +993,7 @@ esac
AC_MSG_CHECKING(for --enable-framework)
if test "$enable_framework"
then
OPT="$OPT -fno-common -dynamic"
BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
# -F. is needed to allow linking to the framework while
# in the build location.
LDFLAGS="$LDFLAGS -Wl,-F."
@ -1545,7 +1599,7 @@ yes
ipv6type=$i
ipv6lib=inet6
ipv6libdir=/usr/inet6/lib
OPT="-I/usr/inet6/include $OPT"
BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
fi
;;
solaris)
@ -1575,7 +1629,7 @@ yes
[ipv6type=$i;
ipv6lib=v6;
ipv6libdir=/usr/local/v6/lib;
OPT="-I/usr/local/v6/include $OPT"])
BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
;;
zeta)
AC_EGREP_CPP(yes, [

View file

@ -173,8 +173,8 @@ def build_extensions(self):
# unfortunately, distutils doesn't let us provide separate C and C++
# compilers
if compiler is not None:
(ccshared,opt) = sysconfig.get_config_vars('CCSHARED','OPT')
args['compiler_so'] = compiler + ' ' + opt + ' ' + ccshared
(ccshared,opt,base) = sysconfig.get_config_vars('CCSHARED','OPT','BASECFLAGS')
args['compiler_so'] = compiler + ' ' + opt + ' ' + ccshared + ' ' + base
if linker_so is not None:
args['linker_so'] = linker_so
self.compiler.set_executables(**args)
@ -252,6 +252,12 @@ def detect_modules(self):
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
# fink installs lots of goodies in /sw/... - make sure we
# check there
if sys.platform == "darwin":
add_dir_to_list(self.compiler.library_dirs, '/sw/lib')
add_dir_to_list(self.compiler.include_dirs, '/sw/include')
if os.path.normpath(sys.prefix) != '/usr':
add_dir_to_list(self.compiler.library_dirs,
sysconfig.get_config_var("LIBDIR"))