diff options
Diffstat (limited to 'python/makefile.mk')
-rw-r--r-- | python/makefile.mk | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/python/makefile.mk b/python/makefile.mk new file mode 100644 index 000000000000..4f50ed3bcccf --- /dev/null +++ b/python/makefile.mk @@ -0,0 +1,241 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +PRJ=. + +PRJNAME=so_python +TARGET=so_python + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk + +.IF "$(DISABLE_PYTHON)"!="TRUE" + +.INCLUDE : pyversion.mk + +.IF "$(SYSTEM_PYTHON)" == "YES" +all: + @echo "An already available installation of python should exist on your system." + @echo "Therefore the version provided here does not need to be built in addition." +.ENDIF + +# --- Files -------------------------------------------------------- + +TARFILE_NAME=Python-$(PYVERSION) +TARFILE_MD5=e81c2f0953aa60f8062c05a4673f2be0 +PATCH_FILES=\ + Python-$(PYVERSION).patch \ + Python-parallel-make.patch \ + Python-ssl.patch \ + Python-aix.patch \ + Python-2.6.1-urllib.patch \ + Python-2.6.1-sysbase.patch \ + Python-2.6.1-nohardlink.patch \ + Python-2.6.1-py2422.patch \ + Python-2.6.1-py4768.patch + +CONFIGURE_DIR= + +.IF "$(GUI)"=="UNX" +BUILD_DIR= +MYCWD=$(shell @pwd)/$(INPATH)/misc/build + +# CLFLAGS get overwritten in Makefile.pre.in +.IF "$(SYSBASE)"!="" +CC+:=-I$(SYSBASE)$/usr$/include +python_LDFLAGS+=-L$(SYSBASE)/usr/lib +.IF "$(COMNAME)"=="sunpro5" +CC+:=$(C_RESTRICTIONFLAGS) +.ENDIF # "$(COMNAME)"=="sunpro5" +.ENDIF # "$(SYSBASE)"!="" + +.IF "$(OS)$(CPU)"=="SOLARISU" +CC+:=$(ARCH_FLAGS) +python_LDFLAGS+=$(ARCH_FLAGS) +.ENDIF + +.IF "$(OS)"=="AIX" +python_CFLAGS=-g0 +.ENDIF + +CONFIGURE_ACTION=$(AUGMENT_LIBRARY_PATH) ./configure --prefix=/python-inst --enable-shared CFLAGS="$(python_CFLAGS)" LDFLAGS="$(python_LDFLAGS)" + +.IF "$(OS)$(CPU)" == "SOLARISI" +CONFIGURE_ACTION += --disable-ipv6 +.ENDIF + +.IF "$(OS)" == "MACOSX" +PATCH_FILES+=Python-2.6.1-py8067.patch Python-2.6.1-dylib_dynload.patch +# don't build dual-arch version as OOo itself is not universal binary either +PATCH_FILES+=Python-2.6.1-arch_$(eq,$(CPU),I i386 ppc).patch + +CONFIGURE_ACTION+=--enable-universalsdk=$(MACOSX_SDK_PATH) --with-universal-archs=32-bit --enable-framework=/python-inst --with-framework-name=OOoPython +ALLTAR: $(MISC)/OOoPython.framework.zip + +.ENDIF + +.IF "$(OS)"=="AIX" +CONFIGURE_ACTION += --disable-ipv6 --with-threads +.ENDIF +BUILD_ACTION=$(ENV_BUILD) $(GNUMAKE) -j$(EXTMAXPROCESS) && $(GNUMAKE) install DESTDIR=$(MYCWD) && chmod -R ug+w $(MYCWD)/python-inst && chmod g+w Include +.ELSE +# ---------------------------------- +# WINDOWS +# ---------------------------------- +.IF "$(COM)"=="GCC" +PATCH_FILES=Python-$(PYVERSION)-mingw.patch +BUILD_DIR= +MYCWD=$(shell cygpath -m $(shell @pwd))/$(INPATH)/misc/build +python_CFLAGS=-mno-cygwin -mthreads +python_LDFLAGS=-mno-cygwin -mthreads +.IF "$(MINGW_SHARED_GCCLIB)"=="YES" +python_LDFLAGS+=-shared-libgcc +.ENDIF +python_LDFLAGS+=-shared-libgcc -Wl,--enable-runtime-pseudo-reloc-v2 +CONFIGURE_ACTION=./configure --prefix=$(MYCWD)/python-inst --enable-shared CC="$(CC:s/guw.exe //)" CXX="$(CXX:s/guw.exe //)" MACHDEP=MINGW32 LN="cp -p" CFLAGS="$(python_CFLAGS)" LDFLAGS="$(python_LDFLAGS)" +BUILD_ACTION=$(ENV_BUILD) make && make install +.ELSE + +.IF "$(CCNUMVER)" >= "001600000000" +PATCH_FILES+=Python-$(PYVERSION)-vc10.patch +BUILD_DIR=PC/VS10.0 +.ELIF "$(CCNUMVER)" >= "001500000000" +BUILD_DIR=PCbuild +.ELIF "$(CCNUMVER)" >= "001400000000" +BUILD_DIR=PC/VS8.0 +.ELIF "$(CCNUMVER)" >= "001310000000" +BUILD_DIR=PC/VS7.1 +.ELSE +BUILD_DIR=PC/VC6 +.ENDIF + +.IF "$(CPU)" == "I" +ARCH=Win32 +.ELSE +ARCH=x64 +.ENDIF + +.IF "$(debug)"!="" +CONF=Debug +.ELSE +CONF=Release +.ENDIF + +# Build python executable and then runs a minimal script. Running the minimal script +# ensures that certain *.pyc files are generated which would otherwise be created on +# solver during registration in insetoo_native +.IF "$(CCNUMVER)" >= "001600000000" +BUILD_ACTION=MSBuild.exe pcbuild.sln /t:Build /p:Configuration=$(CONF) /ToolsVersion:4.0 +.ELSE +BUILD_ACTION=$(COMPATH)$/vcpackages$/vcbuild.exe pcbuild.sln "$(CONF)|$(ARCH)" +.ENDIF +.ENDIF +.ENDIF + +PYVERSIONFILE=$(MISC)$/pyversion.mk + +# --- Targets ------------------------------------------------------ + + +.INCLUDE : set_ext.mk +.ENDIF # DISABLE_PYTHON != TRUE +.INCLUDE : target.mk +.IF "$(DISABLE_PYTHON)"!="TRUE" +.INCLUDE : tg_ext.mk + +.IF "$(L10N_framework)"=="" +.IF "$(GUI)" != "UNX" +.IF "$(COM)"!="GCC" +PYCONFIG:=$(MISC)$/build$/pyconfig.h +$(MISC)$/build$/$(TARFILE_NAME)$/PC$/pyconfig.h : $(PACKAGE_DIR)$/$(CONFIGURE_FLAG_FILE) + +$(PACKAGE_DIR)$/$(BUILD_FLAG_FILE) : $(PYCONFIG) + +$(PYCONFIG) : $(MISC)$/build$/$(TARFILE_NAME)$/PC$/pyconfig.h + -rm -f $@ + cat $(MISC)$/build$/$(TARFILE_NAME)$/PC$/pyconfig.h > $@ +# We know that the only thing guarded with #ifdef _DEBUG in PC/pyconfig.h is +# the line defining Py_DEBUG. +.IF "$(debug)"!="" +# If Python is built with debugging, then the modules we build need to be built with +# Py_DEBUG defined too because of the Py_InitModule4 redefining magic in modsupport.h + sed -e 's/^#ifdef _DEBUG$/#if 1/' <$@ >$@.new && mv $@.new $@ +.ELSE +# Correspondingly, if Python is not built with debugging, it won't use the Py_InitModule4 redefining +# magic, so our Python modules should not be built to provide that either. + sed -e 's/^#ifdef _DEBUG$/#if 0/' <$@ >$@.new && mv $@.new $@ +.ENDIF +.ENDIF +.ENDIF + +ALLTAR : $(PYVERSIONFILE) +.ENDIF # "$(L10N_framework)"=="" + +# rule to allow relocating the whole framework, removing reference to buildinstallation directory +$(PACKAGE_DIR)/fixscripts: $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE) + @echo remove build installdir from scripts + $(COMMAND_ECHO)for file in \ + $(MYCWD)/python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/bin/2to3 \ + $(MYCWD)/python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/bin/idle$(PYMAJOR).$(PYMINOR) \ + $(MYCWD)/python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/bin/pydoc$(PYMAJOR).$(PYMINOR) \ + $(MYCWD)/python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/bin/python$(PYMAJOR).$(PYMINOR)-config \ + $(MYCWD)/python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/bin/smtpd$(PYMAJOR).$(PYMINOR).py ; do \ + {{ rm "$$file" && awk '\ + BEGIN {{print "\ +#!/bin/bash\n\ +origpath=$$(pwd)\n\ +bindir=$$(cd $$(dirname \"$$0\") ; pwd)\n\ +cd \"$$origpath\"\n\ +\"$$bindir/../Resources/Python.app/Contents/MacOS/OOoPython\" - $$@ <<EOF"}} \ + FNR==1{{next}} \ + {{print}} \ + END {{print "EOF"}}' > "$$file" ; }} < "$$file" ; chmod +x "$$file" ; done + @touch $@ + +$(PACKAGE_DIR)/fixinstallnames: $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE) + @echo remove build installdir from OOoPython + $(COMMAND_ECHO)install_name_tool -change \ + /python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython \ + @executable_path/../../../../OOoPython \ + $(MYCWD)/python-inst/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/Resources/Python.app/Contents/MacOS/OOoPython + @touch $@ + +$(MISC)/OOoPython.framework.zip: $(PACKAGE_DIR)/fixinstallnames $(PACKAGE_DIR)/fixscripts + @-rm -f $@ + @echo creating $@ + $(COMMAND_ECHO)cd $(MISC)/build/python-inst && find OOoPython.framework \ + -not -type l -not -name Info.plist.in \ + -not -name pythonw$(PYMAJOR).$(PYMINOR) \ + -not -name python$(PYMAJOR).$(PYMINOR) -print0 | \ + xargs -0 zip $(ZIP_VERBOSITY) ../../$(@:f) + +$(PYVERSIONFILE) : pyversion.mk $(PACKAGE_DIR)$/$(PREDELIVER_FLAG_FILE) + @-rm -f $@ + $(COMMAND_ECHO)$(COPY) pyversion.mk $@ + +.ENDIF # DISABLE_PYTHON != TRUE |