diff -Naur a/gi/Makefile.am b/gi/Makefile.am --- a/gi/Makefile.am 2011-06-13 20:30:25.000000000 +0400 +++ b/gi/Makefile.am 2014-02-23 11:03:40.784200000 +0400 @@ -22,7 +22,8 @@ _gi_la_LDFLAGS = \ -module \ -avoid-version \ - -export-symbols-regex "init_gi|PyInit__gi" + -export-symbols-regex "init_gi|PyInit__gi" \ + -shrext $(PYTHON_SO) _gi_la_LIBADD = \ $(GI_LIBS) \ $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la @@ -82,13 +83,13 @@ # This is to ensure we have a symlink to the .so in the # build directory, which the Python interpreter can load # directly without having to know how to parse .la files. -.la.so: - test -L $@ || $(LN_S) .libs/$@ $@ +%$(PYTHON_SO): %.la + $(LN_S) -f .libs/$@ $@ -all-local: $(LTLIBRARIES:.la=.so) -check-local: $(LTLIBRARIES:.la=.so) +all-local: $(LTLIBRARIES:.la=$(PYTHON_SO)) +check-local: $(LTLIBRARIES:.la=$(PYTHON_SO)) clean-local: - rm -f $(LTLIBRARIES:.la=.so) + rm -f $(LTLIBRARIES:.la=$(PYTHON_SO)) diff -Naur a/gio/Makefile.am b/gio/Makefile.am --- a/gio/Makefile.am 2011-06-13 20:33:49.000000000 +0400 +++ b/gio/Makefile.am 2014-02-23 11:05:13.589200000 +0400 @@ -25,7 +25,7 @@ pygio_PYTHON = __init__.py # linker flags -common_ldflags = -module -avoid-version +common_ldflags = -module -avoid-version -shrext $(PYTHON_SO) if PLATFORM_WIN32 common_ldflags += -no-undefined endif @@ -67,7 +67,7 @@ gio.c: $(GIO_DEFS) $(GIO_OVERRIDES) _gio_la_CFLAGS = $(GIO_CFLAGS) _gio_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gio -_gio_la_LIBADD = $(GIO_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la +_gio_la_LIBADD = $(GIO_LIBS) $(PYTHON_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la _gio_la_SOURCES = \ giomodule.c \ pygio-utils.c \ @@ -85,7 +85,7 @@ unix.c: $(GIOUNIX_DEFS) unix.override unix_la_CFLAGS = $(GIOUNIX_CFLAGS) unix_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initunix -unix_la_LIBADD = $(GIOUNIX_LIBS) +unix_la_LIBADD = $(GIOUNIX_LIBS) $(PYTHON_LIBS) unix_la_SOURCES = unixmodule.c nodist_unix_la_SOURCES = unix.c if BUILD_GIOUNIX @@ -108,10 +108,10 @@ if BUILD_GIO -all: $(pkgpyexec_LTLIBRARIES:.la=.so) -check-local: $(pkgpyexec_LTLIBRARIES:.la=.so) +all: $(pkgpyexec_LTLIBRARIES:.la=$(PYTHON_SO)) +check-local: $(pkgpyexec_LTLIBRARIES:.la=$(PYTHON_SO)) clean-local: - rm -f $(pkgpyexec_LTLIBRARIES:.la=.so) -.la.so: - $(LN_S) .libs/$@ $@ || true + rm -f $(pkgpyexec_LTLIBRARIES:.la=$(PYTHON_SO)) +%$(PYTHON_SO): %.la + $(LN_S) -f .libs/$@ $@ endif diff -Naur a/glib/Makefile.am b/glib/Makefile.am --- a/glib/Makefile.am 2011-06-13 20:33:49.000000000 +0400 +++ b/glib/Makefile.am 2014-02-23 11:06:35.612600000 +0400 @@ -20,13 +20,14 @@ option.py pyglib_LTLIBRARIES = _glib.la -common_ldflags = -module -avoid-version +common_ldflags = -module -avoid-version -shrext $(PYTHON_SO) if PLATFORM_WIN32 common_ldflags += -no-undefined endif libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS = $(GLIB_CFLAGS) -libpyglib_2_0_@PYTHON_BASENAME@_la_LIBADD = $(GLIB_LIBS) $(FFI_LIBS) +libpyglib_2_0_@PYTHON_BASENAME@_la_LDFLAGS = -no-undefined +libpyglib_2_0_@PYTHON_BASENAME@_la_LIBADD = $(GLIB_LIBS) $(FFI_LIBS) $(PYTHON_LIBS) libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES = \ pyglib.c \ pyglib.h \ @@ -29,7 +30,7 @@ _glib_la_CFLAGS = $(GLIB_CFLAGS) _glib_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_glib|PyInit__glib" -_glib_la_LIBADD = $(GLIB_LIBS) libpyglib-2.0-@PYTHON_BASENAME@.la +_glib_la_LIBADD = $(GLIB_LIBS) $(PYTHON_LIBS) libpyglib-2.0-@PYTHON_BASENAME@.la _glib_la_SOURCES = \ glibmodule.c \ pygiochannel.c \ @@ -51,11 +52,11 @@ _glib_la_CFLAGS += -DPLATFORM_WIN32 endif -all: $(pyglib_LTLIBRARIES:.la=.so) -check-local: $(pyglib_LTLIBRARIES:.la=.so) +all: $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) +check-local: $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) clean-local: - rm -f $(pyglib_LTLIBRARIES:.la=.so) -.la.so: - $(LN_S) .libs/$@ $@ || true + rm -f $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) +%$(PYTHON_SO): %.la + $(LN_S) -f .libs/$@ $@ -include $(top_srcdir)/git.mk diff -Naur a/gobject/Makefile.am b/gobject/Makefile.am --- a/gobject/Makefile.am 2011-06-13 20:33:49.000000000 +0400 +++ b/gobject/Makefile.am 2014-02-23 11:08:30.106000000 +0400 @@ -14,7 +14,7 @@ propertyhelper.py pygobject_LTLIBRARIES = _gobject.la -common_ldflags = -module -avoid-version +common_ldflags = -module -avoid-version -shrext $(PYTHON_SO) if PLATFORM_WIN32 common_ldflags += -no-undefined endif @@ -35,6 +35,7 @@ _gobject_la_LIBADD = \ $(GLIB_LIBS) \ $(FFI_LIBS) \ + $(PYTHON_LIBS) \ $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la _gobject_la_SOURCES = \ gobjectmodule.c \ @@ -65,11 +66,11 @@ endif -all: $(pygobject_LTLIBRARIES:.la=.so) -check-local: $(pygobject_LTLIBRARIES:.la=.so) +all: $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) +check-local: $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) clean-local: - rm -f $(pygobject_LTLIBRARIES:.la=.so) -.la.so: - $(LN_S) .libs/$@ $@ || true + rm -f $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) +%$(PYTHON_SO): %.la + $(LN_S) -f .libs/$@ $@ -include $(top_srcdir)/git.mk diff -Naur a/tests/Makefile.am b/tests/Makefile.am --- a/tests/Makefile.am 2011-06-13 20:33:49.000000000 +0400 +++ b/tests/Makefile.am 2014-02-23 11:09:57.671800000 +0400 @@ -5,10 +5,10 @@ nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h libregress_la_CFLAGS = $(GIO_CFLAGS) $(PYCAIRO_CFLAGS) -libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(PYCAIRO_LIBS) +libregress_la_LDFLAGS = -module -avoid-version -no-undefined $(GIO_LIBS) $(PYCAIRO_LIBS) -shrext $(PYTHON_SO) nodist_libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS) -libgimarshallingtests_la_LDFLAGS = -module -avoid-version $(GLIB_LIBS) +libgimarshallingtests_la_LDFLAGS = -module -avoid-version -no-undefined $(GLIB_LIBS) -shrext $(PYTHON_SO) # This is a hack to make sure a shared library is built libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES) @@ -49,7 +49,7 @@ noinst_LTLIBRARIES += testhelper.la testhelper_la_CFLAGS = -I$(top_srcdir)/gobject -I$(top_srcdir)/glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS) -testhelper_la_LDFLAGS = -module -avoid-version +testhelper_la_LDFLAGS = -module -avoid-version -no-undefined $(PYTHON_LIBS) -shrext $(PYTHON_SO) testhelper_la_LIBADD = $(GLIB_LIBS) testhelper_la_SOURCES = \ testhelpermodule.c \ @@ -62,11 +62,11 @@ $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS) -.la.so: - test -L $@ || $(LN_S) .libs/$@ $@ +%$(PYTHON_SO): %.la + $(LN_S) -f .libs/$@ $@ -all: $(LTLIBRARIES:.la=.so) +all: $(LTLIBRARIES:.la=$(PYTHON_SO)) TEST_FILES_STATIC = \ test_gobject.py \ @@ -109,7 +109,7 @@ EXTRA_DIST += $(TEST_FILES_STATIC) $(TEST_FILES_GI) $(TEST_FILES_GIO) clean-local: - rm -f $(LTLIBRARIES:.la=.so) file.txt~ + rm -f $(LTLIBRARIES:.la=$(PYTHON_SO)) file.txt~ DBUS_LAUNCH=$(shell which dbus-launch) RUN_TESTS_ENV_VARS= \ @@ -121,7 +121,7 @@ RUN_TESTS_LAUNCH=$(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) $(srcdir)/runtests.py # run tests in separately to avoid loading static and introspection bindings in the same process -check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled +check-local: $(LTLIBRARIES:.la=$(PYTHON_SO)) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled TEST_FILES="$(TEST_FILES_STATIC)" $(RUN_TESTS_LAUNCH) TEST_FILES="$(TEST_FILES_GI)" $(RUN_TESTS_LAUNCH) if BUILD_GIO