summaryrefslogtreecommitdiffstats
path: root/src/pl/plpython/Makefile
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:19:15 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:19:15 +0000
commit6eb9c5a5657d1fe77b55cc261450f3538d35a94d (patch)
tree657d8194422a5daccecfd42d654b8a245ef7b4c8 /src/pl/plpython/Makefile
parentInitial commit. (diff)
downloadpostgresql-13-upstream.tar.xz
postgresql-13-upstream.zip
Adding upstream version 13.4.upstream/13.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pl/plpython/Makefile')
-rw-r--r--src/pl/plpython/Makefile170
1 files changed, 170 insertions, 0 deletions
diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile
new file mode 100644
index 0000000..9e95285
--- /dev/null
+++ b/src/pl/plpython/Makefile
@@ -0,0 +1,170 @@
+# src/pl/plpython/Makefile
+
+subdir = src/pl/plpython
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+
+# On Windows we have to remove -lpython from the link since we are
+# building our own
+ifeq ($(PORTNAME), win32)
+override python_libspec =
+endif
+
+override CPPFLAGS := -I. -I$(srcdir) $(python_includespec) $(CPPFLAGS)
+
+rpathdir = $(python_libdir)
+
+PGFILEDESC = "PL/Python - procedural language"
+
+NAME = plpython$(python_majorversion)
+
+OBJS = \
+ $(WIN32RES) \
+ plpy_cursorobject.o \
+ plpy_elog.o \
+ plpy_exec.o \
+ plpy_main.o \
+ plpy_planobject.o \
+ plpy_plpymodule.o \
+ plpy_procedure.o \
+ plpy_resultobject.o \
+ plpy_spi.o \
+ plpy_subxactobject.o \
+ plpy_typeio.o \
+ plpy_util.o
+
+DATA = $(NAME)u.control $(NAME)u--1.0.sql
+ifeq ($(python_majorversion),2)
+DATA += plpythonu.control plpythonu--1.0.sql
+endif
+
+# header files to install - it's not clear which of these might be needed
+# so install them all.
+INCS = plpython.h \
+ plpy_cursorobject.h \
+ plpy_elog.h \
+ plpy_exec.h \
+ plpy_main.h \
+ plpy_planobject.h \
+ plpy_plpymodule.h \
+ plpy_procedure.h \
+ plpy_resultobject.h \
+ plpy_spi.h \
+ plpy_subxactobject.h \
+ plpy_typeio.h \
+ plpy_util.h
+
+# Python on win32 ships with import libraries only for Microsoft Visual C++,
+# which are not compatible with mingw gcc. Therefore we need to build a
+# new import library to link with.
+ifeq ($(PORTNAME), win32)
+
+pytverstr=$(subst .,,${python_version})
+PYTHONDLL=$(subst \,/,$(WINDIR))/system32/python${pytverstr}.dll
+
+OBJS += libpython${pytverstr}.a
+
+libpython${pytverstr}.a: python${pytverstr}.def
+ dlltool --dllname python${pytverstr}.dll --def python${pytverstr}.def --output-lib libpython${pytverstr}.a
+
+python${pytverstr}.def:
+ pexports $(PYTHONDLL) > $@
+
+endif # win32
+
+
+SHLIB_LINK = $(python_libspec) $(python_additional_libs) $(filter -lintl,$(LIBS))
+
+REGRESS_OPTS = --dbname=$(PL_TESTDB)
+# Only load plpythonu with Python 2. The test files themselves load
+# the versioned language plpython(2|3)u.
+ifeq ($(python_majorversion),2)
+REGRESS_OPTS += --load-extension=plpythonu
+endif
+
+REGRESS = \
+ plpython_schema \
+ plpython_populate \
+ plpython_test \
+ plpython_do \
+ plpython_global \
+ plpython_import \
+ plpython_spi \
+ plpython_newline \
+ plpython_void \
+ plpython_call \
+ plpython_params \
+ plpython_setof \
+ plpython_record \
+ plpython_trigger \
+ plpython_types \
+ plpython_error \
+ plpython_ereport \
+ plpython_unicode \
+ plpython_quote \
+ plpython_composite \
+ plpython_subtransaction \
+ plpython_transaction \
+ plpython_drop
+
+REGRESS_PLPYTHON3_MANGLE := $(REGRESS)
+
+include $(top_srcdir)/src/Makefile.shlib
+
+all: all-lib
+
+# Ensure parallel safety if a build is started in this directory
+$(OBJS): | submake-generated-headers
+
+install: all install-lib install-data
+
+installdirs: installdirs-lib
+ $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' '$(DESTDIR)$(includedir_server)' '$(DESTDIR)$(pgxsdir)/src/pl/plpython'
+
+uninstall: uninstall-lib uninstall-data
+
+install-data: installdirs
+ $(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/'
+ $(INSTALL_DATA) $(addprefix $(srcdir)/, $(INCS)) '$(DESTDIR)$(includedir_server)'
+ $(INSTALL_DATA) $(srcdir)/regress-python3-mangle.mk '$(DESTDIR)$(pgxsdir)/src/pl/plpython'
+
+uninstall-data:
+ rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA)))
+ rm -f $(addprefix '$(DESTDIR)$(includedir_server)'/, plpython.h plpy_util.h)
+
+.PHONY: install-data uninstall-data
+
+
+include $(srcdir)/regress-python3-mangle.mk
+
+
+check: submake-pg-regress
+ $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS)
+
+installcheck: submake-pg-regress
+ $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS)
+
+
+.PHONY: submake-pg-regress
+submake-pg-regress: | submake-generated-headers
+ $(MAKE) -C $(top_builddir)/src/test/regress pg_regress$(X)
+
+clean distclean: clean-lib
+ rm -f $(OBJS)
+ rm -rf $(pg_regress_clean_files)
+ifeq ($(PORTNAME), win32)
+ rm -f python${pytverstr}.def
+endif
+
+
+# Force this dependency to be known even without dependency info built:
+plpy_plpymodule.o: spiexceptions.h
+
+spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl
+ $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@
+
+distprep: spiexceptions.h
+
+maintainer-clean: distclean
+ rm -f spiexceptions.h