summaryrefslogtreecommitdiff
path: root/project/extras.mk
diff options
context:
space:
mode:
Diffstat (limited to 'project/extras.mk')
-rw-r--r--project/extras.mk24
1 files changed, 24 insertions, 0 deletions
diff --git a/project/extras.mk b/project/extras.mk
index 8962e1b..dcac128 100644
--- a/project/extras.mk
+++ b/project/extras.mk
@@ -23,3 +23,27 @@ else
COMMON_SRCS += $(DYNLOAD_SRCS)
CFLAGS_CONFIG += -DHAVE_DYNAMIC_LOADING -DSOABI=\"$(PYTHON_SOABI)\"
endif
+
+# extension objects
+pyext/obj/%.lo: $(SOURCE_DIR)/Modules/%.c $(ALL_HEADERS) host.tag tree.tag config.tag
+ $(CC) -c -o $@ $< $(CFLAGS_SHARED)
+
+pyext/obj/%.o: $(SOURCE_DIR)/Modules/%.c $(ALL_HEADERS) host.tag tree.tag config.tag
+ $(CC) -c -o $@ $< $(CFLAGS_STATIC)
+
+# dynamically loaded extension module
+pyext/%$(PYTHON_SOEXT): LDFLAGS_SONAME =
+pyext/%$(PYTHON_SOEXT): LDFLAGS_DSOEXT = -Wl,-soname -Wl,$(subst pyext/,,$@)
+pyext/%$(PYTHON_SOEXT): LDFLAGS_DYNEXT = $(LDFLAGS_DSOEXT) $(LDFLAGS_PYEXT)
+
+pyext/%$(PYTHON_SOEXT): $(DSO_REF_SOLINK)
+ $(CC) -shared -o $@ $^ $(LDFLAGS_SHARED) $(LDFLAGS_DYNEXT) \
+ -l$(PACKAGE) $(LDFLAGS_DEPS)
+
+# statically linked extensions
+pyext/%$(OS_ARCHIVE_EXT):
+ rm -f $@
+ $(AR) rcs $@ $^
+
+# build rules for python's extension modules
+include $(PROJECT_DIR)/project/pyexts.mk