summaryrefslogtreecommitdiff
path: root/project/extras.mk
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2018-12-16 10:34:26 -0500
committermidipix <writeonce@midipix.org>2018-12-18 20:38:40 -0500
commit6dc580e25dd8cf717a351c3a72b8c1dcf79062e0 (patch)
tree00333ced6362ce8bb00e2ad610fb285b77545feb /project/extras.mk
parentc0363d5e38af22a1decce9d5c1c9d288909da266 (diff)
downloadsbpython3-6dc580e25dd8cf717a351c3a72b8c1dcf79062e0.tar.bz2
sbpython3-6dc580e25dd8cf717a351c3a72b8c1dcf79062e0.tar.xz
project: added rules and definitions for building python's extension modules.
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