From a9733e59e6f7e3f1602973ae286a5acc8d99c055 Mon Sep 17 00:00:00 2001 From: midipix Date: Nov 25 2018 03:40:57 +0000 Subject: project: added generic rules for building python's extension modules. --- diff --git a/project/extras.mk b/project/extras.mk index 6b69bf7..93d1edc 100644 --- a/project/extras.mk +++ b/project/extras.mk @@ -1,3 +1,4 @@ +# build info PYTHON_VER = 2.7 CFLAGS_COMMON += -I$(SOURCE_DIR)/Include @@ -7,3 +8,66 @@ CFLAGS_CONFIG += -DPREFIX=\"$(PREFIX)\" CFLAGS_CONFIG += -DEXEC_PREFIX=\"$(EXEC_PREFIX)\" CFLAGS_CONFIG += -DVPATH=\"$(SOURCE_DIR)\" CFLAGS_CONFIG += -DPYTHONPATH=\"$(PYTHON_PATH)\" + + +# dynamically loaded extension module +pyext/%$(OS_LIB_SUFFIX): LDFLAGS_IMPLIB = +pyext/%$(OS_LIB_SUFFIX): LDFLAGS_SONAME = +pyext/%$(OS_LIB_SUFFIX): LDFLAGS_DSOEXT = -Wl,-soname -Wl,$(subst pyext/,,$@) +pyext/%$(OS_LIB_SUFFIX): LDFLAGS_DYNEXT = $(LDFLAGS_DSOEXT) $(LDFLAGS_PYEXT) + +pyext/%$(OS_LIB_SUFFIX): + $(CC) -shared -o $@ $^ $(LDFLAGS_SHARED) $(LDFLAGS_DYNEXT) -l$(PACKAGE) + + +# statically linked extension +pyext/%$(OS_ARCHIVE_EXT): + rm -f $@ + $(AR) rcs $@ $^ + + +# compile rules for python's extension modules +Modules/cjkcodecs/%.lo: $(SOURCE_DIR)/Modules/cjkcodecs/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/cjkcodecs/%.o: $(SOURCE_DIR)/Modules/cjkcodecs/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +Modules/expat/%.lo: $(SOURCE_DIR)/Modules/expat/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/expat/%.o: $(SOURCE_DIR)/Modules/expat/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +Modules/zlib/%.lo: $(SOURCE_DIR)/Modules/zlib/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/zlib/%.o: $(SOURCE_DIR)/Modules/zlib/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +Modules/_ctypes/%.lo: $(SOURCE_DIR)/Modules/_ctypes/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/_ctypes/%.o: $(SOURCE_DIR)/Modules/_ctypes/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +Modules/_io/%.lo: $(SOURCE_DIR)/Modules/_io/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/_io/%.o: $(SOURCE_DIR)/Modules/_io/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +Modules/_multiprocessing/%.lo: $(SOURCE_DIR)/Modules/_multiprocessing/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/_multiprocessing/%.o: $(SOURCE_DIR)/Modules/_multiprocessing/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +Modules/_sqlite/%.lo: $(SOURCE_DIR)/Modules/_sqlite/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +Modules/_sqlite/%.o: $(SOURCE_DIR)/Modules/_sqlite/%.c $(ALL_HEADERS) host.tag tree.tag config.tag + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +# build rules for python's extension modules +include $(PROJECT_DIR)/project/pyexts.mk diff --git a/project/pyexts.mk b/project/pyexts.mk new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/project/pyexts.mk diff --git a/project/tree.mk b/project/tree.mk index dcdc150..4af315d 100644 --- a/project/tree.mk +++ b/project/tree.mk @@ -1,5 +1,12 @@ tree.tag: + mkdir -p pyext mkdir -p Modules + mkdir -p Modules/cjkcodecs + mkdir -p Modules/zlib + mkdir -p Modules/_ctypes + mkdir -p Modules/_io + mkdir -p Modules/_multiprocessing + mkdir -p Modules/_sqlite mkdir -p Objects mkdir -p Parser mkdir -p Python