зеркало из https://github.com/mozilla/gecko-dev.git
We are now building with the standard build system - yay!
Not part of the build.
This commit is contained in:
Родитель
35ac71aae1
Коммит
1dc9dec488
|
@ -1,231 +0,0 @@
|
|||
# The contents of this file are subject to the Mozilla Public License Version
|
||||
# 1.1 (the "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
# the specific language governing rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Python XPCOM language bindings.
|
||||
#
|
||||
# The Initial Developer of the Original Code is ActiveState Tool Corp.
|
||||
# Portions created by ActiveState Tool Corp. are Copyright (C) 2000, 2001
|
||||
# ActiveState Tool Corp. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Trent Mick <TrentM@ActiveState.com> (original author)
|
||||
# Mark Hammond <MarkH@ActiveState.com>
|
||||
#
|
||||
|
||||
# Dumb makefile to build PyXPCOM on linux
|
||||
#
|
||||
# The build is by no means clean. I just kept shoving in compiler and linker
|
||||
# options until it worked. :)
|
||||
#
|
||||
# USAGE:
|
||||
# 1. edit top section as appropriate
|
||||
# 2. build, install, and test PyXPCOM
|
||||
# > make -f makefile.stupid.linux DEBUG=1
|
||||
# > make -f makefile.stupid.linux DEBUG=1 install
|
||||
# > make -f makefile.stupid.linux DEBUG=1 test
|
||||
# A debug build is suggested (DEBUG=1) by default because a default
|
||||
# mozilla build is a debug build. Exclude the "DEBUG=1" to build for a
|
||||
# release build of mozilla.
|
||||
#
|
||||
|
||||
#-------------------------
|
||||
# You must edit the variables in this section as appropriate for your machine
|
||||
# The most common edits will just be:
|
||||
# MOZ_SRC, INSTALLDIR, and PYTHON_SRC
|
||||
# =========== START OF SECTION FOR COMMON EDITS =====================
|
||||
|
||||
# this will have an "xpcom" subdir on install
|
||||
INSTALLDIR=/usr/local/ActivePython-2.0/lib/python2.0/site-packages
|
||||
|
||||
PYTHON_SRC=/usr/local/ActivePython-2.0
|
||||
|
||||
# =========== START OF SECTION FOR COMMON EDITS =====================
|
||||
# We expect a "mozilla" directory under this
|
||||
MOZ_SRC=../../../..
|
||||
|
||||
MOZCOMPONENTSDIR=$(MOZ_SRC)/mozilla/dist/bin/components
|
||||
MOZINCLUDES=-I$(MOZ_SRC)/mozilla/dist/include -I$(MOZ_SRC)/mozilla/dist/include/nspr -I$(MOZ_SRC)/mozilla/dist/include/string -I$(MOZ_SRC)/mozilla/dist/include/xpcom
|
||||
MOZLIBDIR=$(MOZ_SRC)/mozilla/dist/lib
|
||||
|
||||
# this is setup to use the *installed* Python directory structure
|
||||
# - To use the development Python dir structure some changes are
|
||||
# necessary here *and* below (below, because there two lib dir
|
||||
# to include in LDFLAGS for the dev dir structure)
|
||||
PYTHON_SRC=/usr/local/ActivePython-2.0
|
||||
PYTHONINCLUDES=-I$(PYTHON_SRC)/include/python2.0
|
||||
PYTHONLIBDIR=$(PYTHON_SRC)/lib/python2.0/config
|
||||
|
||||
XPIDL=$(MOZ_SRC)/mozilla/dist/bin/xpidl
|
||||
IDLINCLUDES=-I$(MOZ_SRC)/mozilla/dist/idl
|
||||
|
||||
|
||||
#-------------------------
|
||||
# You should not need to edit anything beyond this point.
|
||||
#
|
||||
|
||||
# the main PyXPCOM engine library
|
||||
ENGINE=src/_xpcommodule.so
|
||||
# the PyXPCOM loader
|
||||
LOADER=src/loader/libpyloader.so
|
||||
|
||||
all:: $(ENGINE) $(LOADER)
|
||||
|
||||
|
||||
#---- build the PyXPCOM loader
|
||||
|
||||
LOADER_CFLAGS=-fpic -fno-rtti -fno-exceptions -Wconversion \
|
||||
-Wpointer-arith -Wbad-function-cast -Wcast-align -Woverloaded-virtual \
|
||||
-Wsynth -pedantic -Wno-long-long -pthread -DTRIMMED
|
||||
ifdef DEBUG
|
||||
LOADER_CFLAGS += -DDEBUG
|
||||
endif
|
||||
|
||||
# NOTE: not sure if using -rpath is the best way to do this
|
||||
LOADER_LDFLAGS=-Xlinker -rpath -Xlinker $(MOZLIBDIR) \
|
||||
-Xlinker -rpath -Xlinker $(MOZLIBDIR)/components \
|
||||
-Xlinker -rpath -Xlinker $(PYTHONLIBDIR) \
|
||||
-L$(MOZLIBDIR) -L$(PYTHONLIBDIR)
|
||||
# NOTE: can't remember if "-shared" is necessary here
|
||||
LOADER_LIBS=-lpython2.0 -ldl -lpthread -lutil -shared -lxpcom
|
||||
$(LOADER): src/loader/pyloader.cpp
|
||||
c++ $(LOADER_CFLAGS) $(MOZINCLUDES) $(PYTHONINCLUDES) \
|
||||
-c src/loader/pyloader.cpp \
|
||||
-o src/loader/pyloader.o
|
||||
c++ $(LOADER_CFLAGS) $(LOADER_LDFLAGS) $(LOADER_LIBS) \
|
||||
-o $(LOADER) \
|
||||
src/loader/pyloader.o
|
||||
|
||||
|
||||
#---- build the PyXPCOM engine
|
||||
|
||||
ENGINE_CFLAGS=-fpic -fno-rtti -fno-exceptions -Wconversion \
|
||||
-Wpointer-arith -Wbad-function-cast -Wcast-align -Woverloaded-virtual \
|
||||
-Wsynth -pedantic -Wno-long-long -pthread -DTRIMMED -nostdlib
|
||||
ifdef DEBUG
|
||||
ENGINE_CFLAGS += -DDEBUG
|
||||
endif
|
||||
|
||||
# -DXPCOM_EXPORTS
|
||||
XPCOM_SRC_OBJECTS = \
|
||||
src/ErrorUtils.o \
|
||||
src/PyGBase.o \
|
||||
src/PyGModule.o \
|
||||
src/PyGStub.o \
|
||||
src/PyGInputStream.o \
|
||||
src/PyGWeakReference.o \
|
||||
src/PyIClassInfo.o \
|
||||
src/PyIComponentManager.o \
|
||||
src/PyIInputStream.o \
|
||||
src/PyIEnumerator.o \
|
||||
src/PyIID.o \
|
||||
src/PyIInterfaceInfo.o \
|
||||
src/PyIInterfaceInfoManager.o \
|
||||
src/PyISimpleEnumerator.o \
|
||||
src/PyISupports.o \
|
||||
src/Pyxpt_info.o \
|
||||
src/TypeObject.o \
|
||||
src/VariantUtils.o \
|
||||
src/dllmain.o \
|
||||
src/xpcom.o
|
||||
|
||||
%.o: %.cpp
|
||||
c++ $(ENGINE_CFLAGS) $(MOZINCLUDES) $(PYTHONINCLUDES) \
|
||||
-c $< -o $@
|
||||
|
||||
# NOTE: not sure if using -rpath is the best way to do this
|
||||
# NOTE: can't remember if "-shared" is necessary here
|
||||
ENGINE_LDFLAGS=-Xlinker -rpath -Xlinker $(MOZLIBDIR) \
|
||||
-Xlinker -rpath -Xlinker $(MOZLIBDIR)/components \
|
||||
-Xlinker -rpath -Xlinker $(PYTHONLIBDIR) \
|
||||
-Xlinker -shared
|
||||
ENGINE_LIBS=-lpython2.0 -ldl -lpthread -lutil -lxpcom \
|
||||
-lnspr4 -lgtk -lgdk -rdynamic -lgmodule -lglib -lm -lplc4 \
|
||||
-lpthread -lnsl -lresolv -lm -lc -lgcc
|
||||
|
||||
$(ENGINE): $(XPCOM_SRC_OBJECTS)
|
||||
c++ $(ENGINE_CFLAGS) $(ENGINE_LDFLAGS) -o $(ENGINE) \
|
||||
$(XPCOM_SRC_OBJECTS) -L$(MOZLIBDIR) -L$(PYTHONLIBDIR) $(ENGINE_LIBS)
|
||||
|
||||
|
||||
#---- install PyXPCOM
|
||||
|
||||
XPCOM_PACKAGE_FILES = \
|
||||
__init__.py \
|
||||
components.py \
|
||||
file.py \
|
||||
nsError.py \
|
||||
register.py \
|
||||
xpcom_consts.py \
|
||||
xpt.py \
|
||||
client/__init__.py \
|
||||
server/__init__.py \
|
||||
server/enumerator.py \
|
||||
server/factory.py \
|
||||
server/loader.py \
|
||||
server/module.py \
|
||||
server/policy.py
|
||||
|
||||
# this is a cheasy install
|
||||
# - no attention to permissions
|
||||
# - doesn't explicitly use $(XPCOM_PACKAGE_FILES)
|
||||
install:: all $(XPCOM_PACKAGE_FILES)
|
||||
mkdir -p $(INSTALLDIR)/xpcom/client
|
||||
mkdir -p $(INSTALLDIR)/xpcom/server
|
||||
cp -f *.py $(INSTALLDIR)/xpcom
|
||||
cp -f client/*.py $(INSTALLDIR)/xpcom/client
|
||||
cp -f server/*.py $(INSTALLDIR)/xpcom/server
|
||||
cp -f $(ENGINE) $(INSTALLDIR)/xpcom
|
||||
mkdir -p $(MOZCOMPONENTSDIR)
|
||||
cp -f $(LOADER) $(MOZCOMPONENTSDIR)
|
||||
( \
|
||||
export PYTHONPATH=$(INSTALLDIR):$(PYTHONPATH) ; \
|
||||
export MOZILLA_FIVE_HOME=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
export LD_LIBRARY_PATH=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
$(MOZ_SRC)/mozilla/dist/bin/regxpcom \
|
||||
)
|
||||
|
||||
|
||||
#---- build and run the PyXPCOM test suite
|
||||
|
||||
all:: test/test_component/py_test_component.xpt
|
||||
|
||||
test/test_component/py_test_component.xpt: test/test_component/py_test_component.idl
|
||||
$(XPIDL) -m typelib -w $(IDLINCLUDES) -o test/test_component/py_test_component $<
|
||||
|
||||
install::
|
||||
mkdir -p $(MOZCOMPONENTSDIR)
|
||||
cp -f test/test_component/py_test_component.xpt $(MOZCOMPONENTSDIR)
|
||||
cp -f test/test_component/py_test_component.py $(MOZCOMPONENTSDIR)
|
||||
( \
|
||||
export PYTHONPATH=$(INSTALLDIR):$(PYTHONPATH) ; \
|
||||
export MOZILLA_FIVE_HOME=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
export LD_LIBRARY_PATH=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
$(MOZ_SRC)/mozilla/dist/bin/regxpcom \
|
||||
)
|
||||
|
||||
test:: install
|
||||
( \
|
||||
export PYTHONPATH=$(INSTALLDIR):$(PYTHONPATH) ; \
|
||||
export MOZILLA_FIVE_HOME=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
export LD_LIBRARY_PATH=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
python test/regrtest.py \
|
||||
)
|
||||
|
||||
runpython: install
|
||||
( \
|
||||
export PYTHONPATH=$(INSTALLDIR):$(PYTHONPATH) ; \
|
||||
export MOZILLA_FIVE_HOME=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
export LD_LIBRARY_PATH=$(MOZ_SRC)/mozilla/dist/bin ; \
|
||||
python \
|
||||
)
|
||||
|
||||
clean:
|
||||
find . -name "*~" | xargs rm -f
|
||||
find . -name "*.o" | xargs rm -f
|
||||
find . -name "*.pyc" | xargs rm -f
|
||||
find . -name "*.so" | xargs rm -f
|
||||
|
Загрузка…
Ссылка в новой задаче