From 41893e087a482da83e80cc553f225d877a776f1d Mon Sep 17 00:00:00 2001 From: Christian Lohmaier Date: Mon, 6 Jun 2011 20:09:06 +0200 Subject: allow to use internal Python on Mac (Python built as framework) --- pyuno/source/module/makefile.mk | 8 +- pyuno/source/module/makefile.mk.orig | 154 +++++++++++++++++++++++++++++++++++ pyuno/source/module/makefile.mk.rej | 23 ++++++ 3 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 pyuno/source/module/makefile.mk.orig create mode 100644 pyuno/source/module/makefile.mk.rej (limited to 'pyuno/source/module') diff --git a/pyuno/source/module/makefile.mk b/pyuno/source/module/makefile.mk index 1ea1a302ff95..81050c120021 100644 --- a/pyuno/source/module/makefile.mk +++ b/pyuno/source/module/makefile.mk @@ -121,7 +121,7 @@ $(LB)$/lib$(TARGET).a: $(MISC)$/$(TARGET).def targetdll=$(LB)$/$(TARGET)$(DLLPOST) .ENDIF -ALLTAR : \ +ALLTAR : $(eq,$(OS),MACOSX $(MISC)/installname_module $(NULL)) \ $(DLLDEST)$/uno.py \ $(DLLDEST)$/unohelper.py \ $(targetdll) \ @@ -134,6 +134,12 @@ ALLTAR : \ $(DLLDEST)$/%.py: %.py cp $? $@ +$(MISC)/installname_module : $(LB)/$(DLLPRE)$(TARGET)$(DLLPOST) + install_name_tool -change $(PYTHON_MAKEINSTALLDIR)/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython @loader_path/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython $< + # hack to make checkdll happy + ln -sf $(SOLARLIBDIR)/OOoPython.framework $(LB)/OOoPython.framework + touch $@ + $(MISC)$/$(PYUNORC) : pyuno -rm -f $@ cat pyuno > $@ diff --git a/pyuno/source/module/makefile.mk.orig b/pyuno/source/module/makefile.mk.orig new file mode 100644 index 000000000000..1ea1a302ff95 --- /dev/null +++ b/pyuno/source/module/makefile.mk.orig @@ -0,0 +1,154 @@ +#************************************************************************* +# +# 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 +# +# for a copy of the LGPLv3 License. +# +#************************************************************************* +PRJ=..$/.. + +PRJNAME=pyuno +TARGET=pyuno +ENABLE_EXCEPTIONS=TRUE + +LINKFLAGSDEFS = # do not fail with missing symbols + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk +.IF "$(L10N_framework)"=="" + +#------------------------------------------------------------------- + +.IF "$(OS)$(COMEX)" == "SOLARIS4" +# no -Bdirect for SunWS CC +DIRECT = $(LINKFLAGSDEFS) +.ENDIF + +# special setting from environment +.IF "$(EXTRA_CFLAGS)"!="" +EXTRA_FRAMEWORK_FLAG=-framework Python +.ENDIF # .IF "$(EXTRA_CFLAGS)"!="" + +.IF "$(GUI)" == "UNX" +PYUNORC=pyunorc +.ELSE +.INCLUDE : pyversion.mk +PYUNORC=pyuno.ini +DLLPOST=.pyd +.ENDIF + +.IF "$(SYSTEM_PYTHON)" == "YES" +PYTHONLIB=$(PYTHON_LIBS) +CFLAGS+=$(PYTHON_CFLAGS) +.ELSE # "$(SYSTEM_PYTHON)" == "YES" +.INCLUDE : pyversion.mk +CFLAGS+=-I$(SOLARINCDIR)$/python +.ENDIF # "$(SYSTEM_PYTHON)" == "YES" + +SHL1TARGET=$(TARGET) +SLOFILES= \ + $(SLO)$/pyuno_runtime.obj \ + $(SLO)$/pyuno.obj \ + $(SLO)$/pyuno_callable.obj \ + $(SLO)$/pyuno_module.obj \ + $(SLO)$/pyuno_type.obj \ + $(SLO)$/pyuno_util.obj \ + $(SLO)$/pyuno_except.obj \ + $(SLO)$/pyuno_adapter.obj \ + $(SLO)$/pyuno_gc.obj + +# remove this, when issue i35064 is integrated +.IF "$(COM)"=="GCC" +NOOPTFILES= \ + $(SLO)$/pyuno_module.obj +.ENDIF # "$(COM)"=="GCC" + +SHL1STDLIBS= \ + $(CPPULIB) \ + $(CPPUHELPERLIB) \ + $(SALLIB) \ + $(PYTHONLIB) \ + $(EXTRA_FRAMEWORK_FLAG) + +SHL1DEPN= +SHL1LIBS= $(SLB)$/$(TARGET).lib +SHL1IMPLIB= i$(TARGET) + +SHL1DEF= $(MISC)$/$(SHL1TARGET).def + +DEF1NAME= $(SHL1TARGET) +DEF1DEPN= $(MISC)$/pyuno.flt + +DEFLIB1NAME=$(TARGET) + +# --- Targets ------------------------------------------------------ + +.IF "$(GUI)$(COM)"=="WNTGCC" +ALLTAR : \ + $(DLLDEST)$/uno.py \ + $(DLLDEST)$/unohelper.py \ + $(MISC)$/$(PYUNORC) \ + $(LB)$/lib$(TARGET).a + +$(LB)$/lib$(TARGET).a: $(MISC)$/$(TARGET).def + dlltool --dllname $(TARGET)$(DLLPOST) --input-def=$(MISC)$/$(TARGET).def --kill-at --output-lib=$(LB)$/lib$(TARGET).a +.ELSE + +.IF "$(GUI)"!="WNT" +# For some reason the build breaks on Windows if this is listed in the +# prerequisite list of ALLTAR, but pyuno.pyd still gets produced. Go +# figure. But we need it on non-Windows. +targetdll=$(LB)$/$(TARGET)$(DLLPOST) +.ENDIF + +ALLTAR : \ + $(DLLDEST)$/uno.py \ + $(DLLDEST)$/unohelper.py \ + $(targetdll) \ + $(MISC)$/$(PYUNORC) +.ENDIF +.ENDIF + +.INCLUDE : target.mk +.IF "$(L10N_framework)"=="" +$(DLLDEST)$/%.py: %.py + cp $? $@ + +$(MISC)$/$(PYUNORC) : pyuno + -rm -f $@ + cat pyuno > $@ + +$(MISC)$/pyuno.flt : pyuno.flt + -rm -f $@ + cat $? > $@ + +.IF "$(DLLPRE)"!="" +# python does not accept the "lib" prefix in the module library +$(LB)$/$(TARGET)$(DLLPOST) : $(LB)$/$(DLLPRE)$(TARGET)$(DLLPOST) + -rm -f $@ + ln -s $? $@ +.ENDIF + +.ENDIF # L10N_framework + +# vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/pyuno/source/module/makefile.mk.rej b/pyuno/source/module/makefile.mk.rej new file mode 100644 index 000000000000..1d8ab737f9bc --- /dev/null +++ b/pyuno/source/module/makefile.mk.rej @@ -0,0 +1,23 @@ +--- pyuno/source/module/makefile.mk ++++ pyuno/source/module/makefile.mk +@@ -120,7 +120,7 @@ + $(LB)$/lib$(TARGET).a: $(MISC)$/$(TARGET).def + dlltool --dllname $(TARGET)$(DLLPOST) --input-def=$(MISC)$/$(TARGET).def --kill-at --output-lib=$(LB)$/lib$(TARGET).a + .ELSE +-ALLTAR : \ ++ALLTAR : $(eq,$(OS),MACOSX $(MISC)/installname_module $(NULL)) \ + $(DLLDEST)$/uno.py \ + $(DLLDEST)$/unohelper.py \ + $(PYUNO_MODULE) \ +@@ -157,6 +157,11 @@ + @+source $(MISC)$/$(@:b).cmd + .ENDIF + ++$(MISC)/installname_module : $(LB)/$(DLLPRE)$(TARGET)$(DLLPOST) ++ install_name_tool -change $(PYTHON_MAKEINSTALLDIR)/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython @loader_path/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython $< ++ # hack to make checkdll happy ++ ln -sf $(SOLARLIBDIR)/OOoPython.framework $(LB)/OOoPython.framework ++ touch $@ + + $(MISC)$/$(PYUNORC) : pyuno + -rm -f $@ -- cgit