summaryrefslogtreecommitdiff
path: root/pyuno/source
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2011-06-06 20:09:06 +0200
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2011-06-06 20:09:06 +0200
commit41893e087a482da83e80cc553f225d877a776f1d (patch)
tree30de2122f2b1213a598bb4e3615ad260dcfe3fd0 /pyuno/source
parent47a7b9021f07f368c9c2f02cb10417d4a3acb6bf (diff)
allow to use internal Python on Mac (Python built as framework)
Diffstat (limited to 'pyuno/source')
-rw-r--r--pyuno/source/loader/makefile.mk6
-rw-r--r--pyuno/source/loader/makefile.mk.orig94
-rw-r--r--pyuno/source/loader/makefile.mk.rej20
-rw-r--r--pyuno/source/module/makefile.mk8
-rw-r--r--pyuno/source/module/makefile.mk.orig154
-rw-r--r--pyuno/source/module/makefile.mk.rej23
6 files changed, 303 insertions, 2 deletions
diff --git a/pyuno/source/loader/makefile.mk b/pyuno/source/loader/makefile.mk
index 76c3dc2ffecd..d8791e9ffa8e 100644
--- a/pyuno/source/loader/makefile.mk
+++ b/pyuno/source/loader/makefile.mk
@@ -85,10 +85,14 @@ $(DLLDEST)$/%.py: %.py
cp $? $@
.ENDIF # L10N_framework
-ALLTAR : $(MISC)/pythonloader.component
+ALLTAR : $(MISC)/pythonloader.component $(eq,$(OS),MACOSX $(MISC)/installname_loader $(NULL))
$(MISC)/pythonloader.component .ERRREMOVE : \
$(SOLARENV)/bin/createcomponent.xslt pythonloader.component
$(XSLTPROC) --nonet --stringparam uri \
'vnd.sun.star.expand:$$OOO_BASE_DIR/program/$(SHL1TARGETN:f)' -o $@ \
$(SOLARENV)/bin/createcomponent.xslt pythonloader.component
+
+$(MISC)/installname_loader : $(LB)/$(TARGET)$(DLLPOST)
+ install_name_tool -change $(PYTHON_MAKEINSTALLDIR)/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython @loader_path/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython $<
+ touch $@
diff --git a/pyuno/source/loader/makefile.mk.orig b/pyuno/source/loader/makefile.mk.orig
new file mode 100644
index 000000000000..76c3dc2ffecd
--- /dev/null
+++ b/pyuno/source/loader/makefile.mk.orig
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# 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=pyuno
+TARGET=pythonloader.uno
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.IF "$(L10N_framework)"==""
+DLLPRE =
+
+#-------------------------------------------------------------------
+
+.IF "$(OS)$(COMEX)" == "SOLARIS4"
+# no -Bdirect for SunWS CC
+DIRECT= $(LINKFLAGSDEFS)
+.ENDIF
+
+.IF "$(SYSTEM_PYTHON)" == "YES"
+PYTHONLIB=$(PYTHON_LIBS)
+CFLAGS+=$(PYTHON_CFLAGS)
+.IF "$(EXTRA_CFLAGS)"!=""
+PYTHONLIB+= -framework Python
+.ENDIF # "$(EXTRA_CFLAGS)"!=""
+.ELSE
+.INCLUDE : pyversion.mk
+
+CFLAGS+= -I$(SOLARINCDIR)$/python
+.ENDIF
+
+SHL1TARGET= $(TARGET)
+
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(SALLIB) \
+ $(PYUNOLIB) \
+ $(PYTHONLIB)
+
+SHL1VERSIONMAP= $(SOLARENV)$/src$/component.map
+SHL1DEPN=
+SHL1IMPLIB= i$(TARGET)
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME= $(SHL1TARGET)
+SLOFILES= $(SLO)$/pyuno_loader.obj
+
+# --- Targets ------------------------------------------------------
+
+ALL : ALLTAR \
+ $(DLLDEST)$/pythonloader.py
+.ENDIF # L10N_framework
+
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+$(DLLDEST)$/%.py: %.py
+ cp $? $@
+.ENDIF # L10N_framework
+
+ALLTAR : $(MISC)/pythonloader.component
+
+$(MISC)/pythonloader.component .ERRREMOVE : \
+ $(SOLARENV)/bin/createcomponent.xslt pythonloader.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ 'vnd.sun.star.expand:$$OOO_BASE_DIR/program/$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt pythonloader.component
diff --git a/pyuno/source/loader/makefile.mk.rej b/pyuno/source/loader/makefile.mk.rej
new file mode 100644
index 000000000000..f8a8e489aeaf
--- /dev/null
+++ b/pyuno/source/loader/makefile.mk.rej
@@ -0,0 +1,20 @@
+--- pyuno/source/loader/makefile.mk
++++ pyuno/source/loader/makefile.mk
+@@ -89,11 +89,17 @@
+ $(DLLDEST)$/pyuno_services.rdb
+ .ENDIF # L10N_framework
+
++ALLTAR: $(eq,$(OS),MACOSX $(MISC)/installname_loader $(NULL))
++
+ .INCLUDE : target.mk
+ .IF "$(L10N_framework)"==""
+ $(DLLDEST)$/%.py: %.py
+ cp $? $@
+
++$(MISC)/installname_loader : $(LB)/$(TARGET)$(DLLPOST)
++ install_name_tool -change $(PYTHON_MAKEINSTALLDIR)/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython @loader_path/OOoPython.framework/Versions/$(PYMAJOR).$(PYMINOR)/OOoPython $<
++ touch $@
++
+ $(DLLDEST)$/pyuno_services.rdb : makefile.mk $(DLLDEST)$/$(DLLPRE)$(TARGET)$(DLLPOST)
+ -rm -f $@ $(DLLDEST)$/pyuno_services.tmp $(DLLDEST)$/pyuno_services.rdb
+ cd $(DLLDEST) && $(REGCOMP) -register -r pyuno_services.tmp -wop $(foreach,i,$(COMPONENTS) -c $(i))
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
+# <http://www.openoffice.org/license.html>
+# 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 $@