diff -r e6dce5611dae -r 32143cda4d80 Lib/sysconfig.py --- a/Lib/sysconfig.py Mon Jun 02 22:58:13 2014 -0700 +++ b/Lib/sysconfig.py Wed Jun 04 18:00:58 2014 +0200 @@ -690,12 +690,51 @@ print('%s: ' % (title)) print('\t%s = "%s"' % (key, value)) +def _generate_config_file(filename, template = None): + if not filename: + filename = '-' + if not template: + template = filename == '-' and filename or filename + '.in' + if not filename == '-' and filename == template: + raise ValueError( + "output filename '%s' must be different from input filename '%s'" + % (filename, template)) + + # build regex "@prefix@|@libdir@|@LIBPL@|..." + import re + rexstr = '' + sep = '' + vars = get_config_vars() + for k, v in vars.items(): + rexstr += sep + '@'+k+'@' + sep = '|' + rex = re.compile(rexstr) + + with filename == '-' and sys.stdout or open(filename, 'w') as outfile: + with template == '-' and sys.stdin or open(template, 'r') as infile: + for line in infile: + while True: + found = rex.search(line) + if not found: + outfile.write(line) + break + value = vars.get(found.group(0)[1:-1]) + outfile.write(line[:found.span()[0]] + str(value)) + line = line[found.span()[1]:] + pass def _main(): """Display all information sysconfig detains.""" if '--generate-posix-vars' in sys.argv: _generate_posix_vars() return + if '--generate-config-file' in sys.argv: + for arg in sys.argv: + param, sep, value = arg.partition('=') + if param == '--file': # see config.status --help + file, sep, template = value.partition(':') + _generate_config_file(file, template) + return print('Platform: "%s"' % get_platform()) print('Python version: "%s"' % get_python_version()) print('Current installation scheme: "%s"' % _get_default_scheme()) diff -r e6dce5611dae -r 32143cda4d80 Makefile.pre.in --- a/Makefile.pre.in Mon Jun 02 22:58:13 2014 -0700 +++ b/Makefile.pre.in Wed Jun 04 18:00:58 2014 +0200 @@ -87,6 +87,9 @@ SGI_ABI= @SGI_ABI@ CCSHARED= @CCSHARED@ LINKFORSHARED= @LINKFORSHARED@ +BLINKFORSHARED= @BLINKFORSHARED@ +LINKFORMODULE= @LINKFORMODULE@ +BLINKFORMODULE= @BLINKFORMODULE@ ARFLAGS= @ARFLAGS@ # Extra C flags added for building the interpreter object files. CFLAGSFORSHARED=@CFLAGSFORSHARED@ @@ -131,6 +134,8 @@ BLDSHARED= @BLDSHARED@ $(PY_LDFLAGS) LDCXXSHARED= @LDCXXSHARED@ DESTSHARED= $(BINLIBDEST)/lib-dynload +# list of exported symbols for AIX +EXPORTSYMS= @EXPORTSYMS@ # Executable suffix (.exe on Windows and Mac OS X) EXE= @EXEEXT@ @@ -337,6 +342,11 @@ ########################################################################## # Python +PYCONFIGFILES = \ + Misc/python.pc \ + Misc/python-config.sh \ + Misc/python-config + OPCODETARGETS_H= \ Python/opcode_targets.h @@ -459,7 +469,7 @@ # Default target all: build_all -build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks Modules/_testembed python-config +build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks Modules/_testembed $(PYCONFIGFILES) # Compile a binary with gcc profile guided optimization. profile-opt: @@ -532,8 +542,8 @@ $(RUNSHARED) $(PYTHON_FOR_BUILD) ./Tools/clinic/clinic.py --make # Build the interpreter -$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) - $(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS) + $(LINKCC) $(PY_LDFLAGS) $(BLINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) platform: $(BUILDPYTHON) pybuilddir.txt $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform @@ -585,7 +595,11 @@ libpython$(VERSION).sl: $(LIBRARY_OBJS) - $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST) + $(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST) + +# list of exported symbols for AIX +Modules/python.exp: $(LIBRARY) + $(srcdir)/Modules/makexp_aix $@ . $? # Copy up the gdb python hooks into a position where they can be automatically # loaded by gdb during Lib/test/test_gdb.py @@ -624,7 +638,7 @@ # for a shared core library; otherwise, this rule is a noop. $(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS) if test -n "$(DLLLIBRARY)"; then \ - $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ + $(BLDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); \ else true; \ fi @@ -658,8 +672,8 @@ echo "-----------------------------------------------"; \ fi -Modules/_testembed: Modules/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) - $(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +Modules/_testembed: Modules/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS) + $(LINKCC) $(PY_LDFLAGS) $(BLINKFORSHARED) -o $@ Modules/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) ############################################################################ # Importlib @@ -1261,19 +1275,18 @@ fi; \ cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen -python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh - # Substitution happens here, as the completely-expanded BINDIR - # is not available in configure - sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py - # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} - sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config - # On Darwin, always use the python version of the script, the shell - # version doesn't use the compiler customizations that are provided - # in python (_osx_support.py). - if test `uname -s` = Darwin; then \ - cp python-config.py python-config; \ - fi +Misc/python.pc: $(srcdir)/Misc/python.pc.in +Misc/python-config: $(srcdir)/Misc/python-config.in +Misc/python-config.sh: $(srcdir)/Misc/python-config.sh.in +# Besides a common subset, both sysconfig and config.status provide variables +# not known to the other. While config.status provides the configured values, +# sysconfig provides values with variable-references resolved already: +# Substitute sysconfig values first, and remaining ones with config.status. +$(PYCONFIGFILES): $(BUILDPYTHON) pybuilddir.txt + $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig \ + --generate-config-file --file=-:$(srcdir)/$@.in | \ + $(SHELL) config.status --file=$@:- # Install the include files INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY) @@ -1300,7 +1313,7 @@ # pkgconfig directory LIBPC= $(LIBDIR)/pkgconfig -libainstall: all python-config +libainstall: all $(PYCONFIGFILES) @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \ do \ if test ! -d $(DESTDIR)$$i; then \ @@ -1331,8 +1344,14 @@ $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh - $(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py - $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config + $(INSTALL_SCRIPT) Misc/python-config $(DESTDIR)$(LIBPL)/python-config.py + $(INSTALL_SCRIPT) Misc/python-config.sh $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config + # On Darwin, always use the python version of the script, the shell + # version doesn't use the compiler customizations that are provided + # in python (_osx_support.py). + if test `uname -s` = Darwin; then \ + $(INSTALL_SCRIPT) Misc/python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config; \ + fi @if [ -s Modules/python.exp -a \ "`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \ echo; echo "Installing support files for building shared extension modules on AIX:"; \ @@ -1342,7 +1361,7 @@ $(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix \ $(DESTDIR)$(LIBPL)/makexp_aix; \ echo "$(LIBPL)/makexp_aix"; \ - $(INSTALL_SCRIPT) $(srcdir)/Modules/ld_so_aix \ + $(INSTALL_SCRIPT) Modules/ld_so_aix \ $(DESTDIR)$(LIBPL)/ld_so_aix; \ echo "$(LIBPL)/ld_so_aix"; \ echo; echo "See Misc/AIX-NOTES for details."; \ @@ -1529,7 +1548,7 @@ config.cache config.log pyconfig.h Modules/config.c -rm -rf build platform -rm -rf $(PYTHONFRAMEWORKDIR) - -rm -f python-config.py python-config + -rm -f $(PYCONFIGFILES) # Make things extra clean, before making a distribution: # remove all generated files, even Makefile[.pre] @@ -1540,7 +1559,7 @@ done -rm -f core Makefile Makefile.pre config.status \ Modules/Setup Modules/Setup.local Modules/Setup.config \ - Modules/ld_so_aix Modules/python.exp Misc/python.pc + Modules/ld_so_aix Modules/python.exp -rm -f python*-gdb.py find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \ -o -name '[@,#]*' -o -name '*.old' \ diff -r e6dce5611dae -r 32143cda4d80 Misc/python-config.in --- a/Misc/python-config.in Mon Jun 02 22:58:13 2014 -0700 +++ b/Misc/python-config.in Wed Jun 04 18:00:58 2014 +0200 @@ -1,4 +1,4 @@ -#!@EXENAME@ +#!@BINDIR@/python@LDVERSION@@EXE@ # -*- python -*- # Keep this script in sync with python-config.sh.in @@ -47,15 +47,9 @@ print(' '.join(flags)) elif opt in ('--libs', '--ldflags'): - libs = getvar('LIBS').split() + getvar('SYSLIBS').split() - libs.append('-lpython' + pyver + sys.abiflags) - # add the prefix/lib/pythonX.Y/config dir, but only if there is no - # shared library in prefix/lib/. + # no libs for modules if opt == '--ldflags': - if not getvar('Py_ENABLE_SHARED'): - libs.insert(0, '-L' + getvar('LIBPL')) - if not getvar('PYTHONFRAMEWORK'): - libs.extend(getvar('LINKFORSHARED').split()) + libs.extend(getvar('LINKFORMODULE').split()) print(' '.join(libs)) elif opt == '--extension-suffix': diff -r e6dce5611dae -r 32143cda4d80 Misc/python-config.sh.in --- a/Misc/python-config.sh.in Mon Jun 02 22:58:13 2014 -0700 +++ b/Misc/python-config.sh.in Wed Jun 04 18:00:58 2014 +0200 @@ -40,10 +40,9 @@ LIBC="@LIBC@" SYSLIBS="$LIBM $LIBC" ABIFLAGS="@ABIFLAGS@" -LIBS="@LIBS@ $SYSLIBS -lpython${VERSION}${ABIFLAGS}" BASECFLAGS="@BASECFLAGS@" LDLIBRARY="@LDLIBRARY@" -LINKFORSHARED="@LINKFORSHARED@" +LINKFORMODULE="@LINKFORMODULE@" OPT="@OPT@" PY_ENABLE_SHARED="@PY_ENABLE_SHARED@" LDVERSION="@LDVERSION@" @@ -85,18 +84,10 @@ echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT" ;; --libs) - echo "$LIBS" + # no libs for modules ;; --ldflags) - LINKFORSHAREDUSED= - if [ -z "$PYTHONFRAMEWORK" ] ; then - LINKFORSHAREDUSED=$LINKFORSHARED - fi - LIBPLUSED= - if [ "$PY_ENABLE_SHARED" = "0" ] ; then - LIBPLUSED="-L$LIBPL" - fi - echo "$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED" + echo "$LINKFORMODULE" ;; --extension-suffix) echo "$SO" diff -r e6dce5611dae -r 32143cda4d80 Misc/python.pc.in --- a/Misc/python.pc.in Mon Jun 02 22:58:13 2014 -0700 +++ b/Misc/python.pc.in Wed Jun 04 18:00:58 2014 +0200 @@ -9,5 +9,5 @@ Requires: Version: @VERSION@ Libs.private: @LIBS@ -Libs: -L${libdir} -lpython@VERSION@@ABIFLAGS@ +Libs: -L${libdir} -lpython@VERSION@@ABIFLAGS@ @LINKFORSHARED@ Cflags: -I${includedir}/python@VERSION@@ABIFLAGS@ diff -r e6dce5611dae -r 32143cda4d80 Modules/ld_so_aix.in --- a/Modules/ld_so_aix.in Mon Jun 02 22:58:13 2014 -0700 +++ b/Modules/ld_so_aix.in Wed Jun 04 18:00:58 2014 +0200 @@ -70,6 +70,7 @@ fi makexp=`dirname $0`/makexp_aix +test -x "${makexp}" || makexp="@abs_srcdir@/makexp_aix" # Check for existence of compiler. CC=$1; shift diff -r e6dce5611dae -r 32143cda4d80 configure --- a/configure Mon Jun 02 22:58:13 2014 -0700 +++ b/configure Wed Jun 04 18:00:58 2014 +0200 @@ -653,6 +653,9 @@ PKG_CONFIG SHLIBS CFLAGSFORSHARED +BLINKFORMODULE +LINKFORMODULE +BLINKFORSHARED LINKFORSHARED CCSHARED BLDSHARED @@ -680,6 +683,7 @@ RANLIB USE_INLINE GNULD +EXPORTSYMS LINKCC LDVERSION RUNSHARED @@ -5444,8 +5448,6 @@ # If CXX is set, and if it is needed to link a main function that was # compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable: # python might then depend on the C++ runtime -# This is altered for AIX in order to build the export list before -# linking. { $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5 $as_echo_n "checking LINKCC... " >&6; } @@ -5453,13 +5455,6 @@ then LINKCC='$(PURIFY) $(MAINCC)' case $ac_sys_system in - AIX*) - exp_extra="\"\"" - if test $ac_sys_release -ge 5 -o \ - $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then - exp_extra="." - fi - LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";; QNX*) # qcc must be used because the other compilers do not # support -N. @@ -5469,6 +5464,22 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5 $as_echo "$LINKCC" >&6; } +# EXPORTSYMS holds the list of exported symbols for AIX. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking EXPORTSYMS" >&5 +$as_echo_n "checking EXPORTSYMS... " >&6; } +case $ac_sys_system in +AIX*) + if test -z "$EXPORTSYMS"; then + EXPORTSYMS="Modules/python.exp" + fi + ;; +*) + EXPORTSYMS= ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPORTSYMS" >&5 +$as_echo "$EXPORTSYMS" >&6; } + # GNULD is set to "yes" if the GNU linker is used. If this goes wrong # make sure we default having it set to "no": this is used by # distutils.unixccompiler to know if it should add --enable-new-dtags @@ -8459,7 +8470,6 @@ - # SHLIB_SUFFIX is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin { $as_echo "$as_me:${as_lineno-$LINENO}: checking the extension of shared libraries" >&5 @@ -8489,11 +8499,11 @@ then case $ac_sys_system/$ac_sys_release in AIX*) - BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp" - LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp" + BLDSHARED="Modules/ld_so_aix \$(CC)"; BLINKFORMODULE='-Wl,-bI:Modules/python.exp' + LDSHARED="\$(LIBPL)/ld_so_aix \$(CC)"; LINKFORMODULE='-Wl,-bI:$(LIBPL)/python.exp' ;; IRIX/5*) LDSHARED="ld -shared";; - IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";; + IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared"; LINKFORMODULE="-all";; SunOS/5*) if test "$GCC" = "yes" ; then LDSHARED='$(CC) -shared' @@ -8514,50 +8524,42 @@ LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + BLINKFORMODULE='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LINKFORMODULE='$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' else # No framework. Ignore undefined symbols, assuming they come from Python - LDSHARED="$LDSHARED -undefined suppress" - LDCXXSHARED="$LDCXXSHARED -undefined suppress" + LINKFORMODULE="-undefined suppress" fi ;; Darwin/1.4*|Darwin/5.*|Darwin/6.*) LDSHARED='$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + BLINKFORMODULE='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LINKFORMODULE='$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' else # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' + BLINKFORMODULE='-bundle_loader $(BUILDPYTHON)' + LINKFORMODULE='-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' fi ;; Darwin/*) # Use -undefined dynamic_lookup whenever possible (10.3 and later). # This allows an extension to be used in any Python + LDSHARED='$(CC) -bundle' + LDCXXSHARED='$(CXX) -bundle' if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2 then - LDSHARED='$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' - BLDSHARED="$LDSHARED" + LINKFORMODULE='-undefined dynamic_lookup' else - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + BLINKFORMODULE='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LINKFORMODULE='$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' else # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' + BLINKFORMODULE='-bundle_loader $(BUILDPYTHON)' + LINKFORMODULE='-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' fi fi ;; @@ -8578,16 +8580,16 @@ OpenBSD*) if [ "`$CC -dM -E - &5 -$as_echo "$LDSHARED" >&6; } -LDCXXSHARED=${LDCXXSHARED-$LDSHARED} -BLDSHARED=${BLDSHARED-$LDSHARED} +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDSHARED $LINKFORMODULE" >&5 +$as_echo "$LDSHARED $LINKFORMODULE" >&6; } +BLINKFORMODULE=${BLINKFORMODULE-$LINKFORMODULE} +BLDSHARED="${BLDSHARED-$LDSHARED} \$(BLINKFORMODULE)" +LDCXXSHARED="${LDCXXSHARED-$LDSHARED} \$(LINKFORMODULE)" +LDSHARED="$LDSHARED \$(LINKFORMODULE)" # CCSHARED are the C *flags* used to create objects to go into a shared # library (module) -- this is only needed for a few systems { $as_echo "$as_me:${as_lineno-$LINENO}: checking CCSHARED" >&5 @@ -8655,12 +8659,15 @@ $as_echo "$CCSHARED" >&6; } # LINKFORSHARED are the flags passed to the $(CC) command that links # the python executable -- this is only needed for a few systems +# Make-targets using $(LINKFORSHARED) need to depend on $(EXPORTSYMS) for AIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKFORSHARED" >&5 $as_echo_n "checking LINKFORSHARED... " >&6; } if test -z "$LINKFORSHARED" then case $ac_sys_system/$ac_sys_release in - AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';; + AIX*) + BLINKFORSHARED='-Wl,-bE:Modules/python.exp -lld' + LINKFORSHARED='-Wl,-bE:$(LIBPL)/python.exp -lld';; hp*|HP*) LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; @@ -8711,7 +8718,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5 $as_echo "$LINKFORSHARED" >&6; } - +BLINKFORSHARED=${BLINKFORSHARED-$LINKFORSHARED} { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGSFORSHARED" >&5 @@ -15401,7 +15408,7 @@ # generate output files -ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh" +ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config" ac_config_files="$ac_config_files Modules/ld_so_aix" @@ -16104,8 +16111,6 @@ "Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;; "Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; "Modules/Setup.config") CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;; - "Misc/python.pc") CONFIG_FILES="$CONFIG_FILES Misc/python.pc" ;; - "Misc/python-config.sh") CONFIG_FILES="$CONFIG_FILES Misc/python-config.sh" ;; "Modules/ld_so_aix") CONFIG_FILES="$CONFIG_FILES Modules/ld_so_aix" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; diff -r e6dce5611dae -r 32143cda4d80 configure.ac --- a/configure.ac Mon Jun 02 22:58:13 2014 -0700 +++ b/configure.ac Wed Jun 04 18:00:58 2014 +0200 @@ -833,21 +833,12 @@ # If CXX is set, and if it is needed to link a main function that was # compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable: # python might then depend on the C++ runtime -# This is altered for AIX in order to build the export list before -# linking. AC_SUBST(LINKCC) AC_MSG_CHECKING(LINKCC) if test -z "$LINKCC" then LINKCC='$(PURIFY) $(MAINCC)' case $ac_sys_system in - AIX*) - exp_extra="\"\"" - if test $ac_sys_release -ge 5 -o \ - $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then - exp_extra="." - fi - LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";; QNX*) # qcc must be used because the other compilers do not # support -N. @@ -856,6 +847,20 @@ fi AC_MSG_RESULT($LINKCC) +# EXPORTSYMS holds the list of exported symbols for AIX. +AC_SUBST(EXPORTSYMS) +AC_MSG_CHECKING(EXPORTSYMS) +case $ac_sys_system in +AIX*) + if test -z "$EXPORTSYMS"; then + EXPORTSYMS="Modules/python.exp" + fi + ;; +*) + EXPORTSYMS= ;; +esac +AC_MSG_RESULT($EXPORTSYMS) + # GNULD is set to "yes" if the GNU linker is used. If this goes wrong # make sure we default having it set to "no": this is used by # distutils.unixccompiler to know if it should add --enable-new-dtags @@ -1938,7 +1943,10 @@ AC_SUBST(LDCXXSHARED) AC_SUBST(BLDSHARED) AC_SUBST(CCSHARED) -AC_SUBST(LINKFORSHARED) +AC_SUBST(LINKFORSHARED)dnl how to provide Python symbols for modules, +AC_SUBST(BLINKFORSHARED)dnl same at Python buildtime +AC_SUBST(LINKFORMODULE)dnl where a module gets the Python symbols from, +AC_SUBST(BLINKFORMODULE)dnl same at Python buildtime # SHLIB_SUFFIX is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin @@ -1966,11 +1974,11 @@ then case $ac_sys_system/$ac_sys_release in AIX*) - BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp" - LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp" + BLDSHARED="Modules/ld_so_aix \$(CC)"; BLINKFORMODULE='-Wl,-bI:Modules/python.exp' + LDSHARED="\$(LIBPL)/ld_so_aix \$(CC)"; LINKFORMODULE='-Wl,-bI:$(LIBPL)/python.exp' ;; IRIX/5*) LDSHARED="ld -shared";; - IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";; + IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared"; LINKFORMODULE="-all";; SunOS/5*) if test "$GCC" = "yes" ; then LDSHARED='$(CC) -shared' @@ -1991,50 +1999,42 @@ LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + BLINKFORMODULE='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LINKFORMODULE='$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' else # No framework. Ignore undefined symbols, assuming they come from Python - LDSHARED="$LDSHARED -undefined suppress" - LDCXXSHARED="$LDCXXSHARED -undefined suppress" + LINKFORMODULE="-undefined suppress" fi ;; Darwin/1.4*|Darwin/5.*|Darwin/6.*) LDSHARED='$(CC) -bundle' LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + BLINKFORMODULE='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LINKFORMODULE='$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' else # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' + BLINKFORMODULE='-bundle_loader $(BUILDPYTHON)' + LINKFORMODULE='-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' fi ;; Darwin/*) # Use -undefined dynamic_lookup whenever possible (10.3 and later). # This allows an extension to be used in any Python + LDSHARED='$(CC) -bundle' + LDCXXSHARED='$(CXX) -bundle' if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2 then - LDSHARED='$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' - BLDSHARED="$LDSHARED" + LINKFORMODULE='-undefined dynamic_lookup' else - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' if test "$enable_framework" ; then # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + BLINKFORMODULE='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LINKFORMODULE='$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' else # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' + BLINKFORMODULE='-bundle_loader $(BUILDPYTHON)' + LINKFORMODULE='-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' fi fi ;; @@ -2055,16 +2055,16 @@ OpenBSD*) if [[ "`$CC -dM -E -