# build info
CFLAGS_COMMON += -I$(PROJECT_DIR)/profiles
CFLAGS_COMMON += -I$(PROJECT_DIR)/project/variants/$(PYTHON_MAJOR).$(PYTHON_MINOR).$(PYTHON_MICRO)
CFLAGS_COMMON += -I$(SOURCE_DIR)/Include
CFLAGS_CONFIG += -DPLATFORM=\"$(PYTHON_PLATFORM)\"
CFLAGS_CONFIG += -DVERSION=\"$(PYTHON_VER)\"
CFLAGS_CONFIG += -DPREFIX=\"$(PREFIX)\"
CFLAGS_CONFIG += -DEXEC_PREFIX=\"$(EXEC_PREFIX)\"
CFLAGS_CONFIG += -DVPATH=\"$(SOURCE_DIR)\"
CFLAGS_CONFIG += -DPYTHONPATH=\"$(PYTHON_PATH)\"
CFLAGS_CONFIG += -DABIFLAGS=\"$(PYTHON_ABIFL)\"
CFLAGS_CONFIG += -D_PYTHONFRAMEWORK=\"\"
# python's front-end utility
LDFLAGS_DEPS += -Wl,--as-needed
LDFLAGS_DEPS += -lm -lpthread -lutil -ldl -lcrypt
LDFLAGS_DEPS += -Wl,--no-as-needed
LDFLAGS_CONFIG += $(LDFLAGS_DEPS)
LDFLAGS_CONFIG += -Wl,-rpath -Wl,$(LIBDIR)
ifeq ($(ALL_STATIC),yes)
CFLAGS_STATIC += -DPY_ALL_STATIC
LDFLAGS_STATIC += $(PYEXT_STATIC)
LDFLAGS_STATIC += $(LDFLAGS_PYEXT_STATIC)
LDFLAGS_STATIC += $(LDFLAGS_NCURSES_STATIC)
LDFLAGS_STATIC += $(LDFLAGS_SQLITE_STATIC)
LDFLAGS_STATIC += $(LDFLAGS_EXPAT_STATIC)
LDFLAGS_STATIC += $(LDFLAGS_DBM_STATIC)
LDFLAGS_STATIC += $(LDFLAGS_PYEXT_STATIC)
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
# shared extension modules: desired subset
$(SHARED_APP): $(PYEXT_SHARED)
$(STATIC_APP): $(PYEXT_STATIC)
# pycompile (core native python executable for .pyc generation)
include $(PROJECT_DIR)/project/pycompile.mk
# pydist (python's distributed .py scripts)
include $(PROJECT_DIR)/project/pydist.mk
# pycgen (python's distributed .pyc objects)
include $(PROJECT_DIR)/project/pycgen.mk
# pytools (python's {prefix}/bin script-based tools)
include $(PROJECT_DIR)/project/pytools.mk
# pyinst (python's custom install bits)
include $(PROJECT_DIR)/project/pyinst.mk