diff options
author | Tony Theodore <tonyt@logyst.com> | 2017-10-26 06:29:23 (GMT) |
---|---|---|
committer | Tony Theodore <tonyt@logyst.com> | 2017-10-26 09:15:09 (GMT) |
commit | 27ffd10c5dfc4a7b4b042529b2bcbad16e72e4f1 (patch) | |
tree | 73bb48c1bc222c1841c87c314915e8f10f57fd0f /src/glib.mk | |
parent | 994ad47302e8811614b7eb49fc05234942b95b89 (diff) | |
download | mxe-27ffd10c5dfc4a7b4b042529b2bcbad16e72e4f1.zip mxe-27ffd10c5dfc4a7b4b042529b2bcbad16e72e4f1.tar.gz mxe-27ffd10c5dfc4a7b4b042529b2bcbad16e72e4f1.tar.bz2 |
glib: refactor native tools
fixes #1934
The method of symlinks to native tools fails when glib versions drift
too far apart - the obvious solution would be to update more frequently,
but glib (and downstream friends) are always difficult to update.
This set of changes:
- always builds tools on linux
- builds tools only once
- uses pre-built packages for darwin
- is untested on freebsd
Diffstat (limited to 'src/glib.mk')
-rw-r--r-- | src/glib.mk | 104 |
1 files changed, 45 insertions, 59 deletions
diff --git a/src/glib.mk b/src/glib.mk index 9f1bb46..d70693d 100644 --- a/src/glib.mk +++ b/src/glib.mk @@ -10,6 +10,9 @@ $(PKG)_SUBDIR := glib-$($(PKG)_VERSION) $(PKG)_FILE := glib-$($(PKG)_VERSION).tar.xz $(PKG)_URL := https://download.gnome.org/sources/glib/$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE) $(PKG)_DEPS := gcc dbus gettext libffi libiconv pcre zlib +$(PKG)_TARGETS := $(BUILD) $(MXE_TARGETS) + +$(PKG)_DEPS_$(BUILD) := gettext libiconv zlib define $(PKG)_UPDATE $(WGET) -q -O- 'https://git.gnome.org/browse/glib/refs/tags' | \ @@ -18,28 +21,17 @@ define $(PKG)_UPDATE head -1 endef -define $(PKG)_NATIVE_BUILD - cp -Rp '$(1)' '$(1).native' - - # native build of libiconv (used by glib-genmarshal) - cd '$(1).native' && $(call UNPACK_PKG_ARCHIVE,libiconv) - $(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/libiconv-*.patch)), - (cd '$(1).native/$(libiconv_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH)) - cd '$(1).native/$(libiconv_SUBDIR)' && ./configure \ - --disable-shared \ - --disable-nls - $(MAKE) -C '$(1).native/$(libiconv_SUBDIR)' -j '$(JOBS)' - - # native build of zlib... - cd '$(1).native' && $(call UNPACK_PKG_ARCHIVE,zlib) - cd '$(1).native/$(zlib_SUBDIR)' && ./configure \ - --static - $(MAKE) -C '$(1).native/$(zlib_SUBDIR)' -j '$(JOBS)' +define $(PKG)_BUILD_DARWIN + # on darwin, use pre-built tools from macports with pinned + # version set in plugins/native/darwin/glib2-macports + $(call PREPARE_PKG_SOURCE,glib2-macports,$(BUILD_DIR)) + cp -Rp '$(BUILD_DIR)/opt/local/bin' '$(PREFIX)/$(TARGET)/' +endef - # native build for glib-genmarshal, without gettext - cd '$(1).native' && ./configure \ - --disable-shared \ - --prefix='$(PREFIX)/$(TARGET)' \ +define $(PKG)_BUILD_NATIVE + # native build for glib-tools + cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ + $(MXE_CONFIGURE_OPTS) \ --enable-regex \ --disable-threads \ --disable-selinux \ @@ -50,44 +42,38 @@ define $(PKG)_NATIVE_BUILD --disable-libmount \ --with-libiconv=gnu \ --with-pcre=internal \ - CPPFLAGS='-I$(1).native/$(libiconv_SUBDIR)/include -I$(1).native/$(zlib_SUBDIR)' \ - LDFLAGS='-L$(1).native/$(libiconv_SUBDIR)/lib/.libs -L$(1).native/$(zlib_SUBDIR)' - $(SED) -i 's,#define G_ATOMIC.*,,' '$(1).native/config.h' - $(MAKE) -C '$(1).native/glib' -j '$(JOBS)' - $(MAKE) -C '$(1).native/gthread' -j '$(JOBS)' - $(MAKE) -C '$(1).native/gmodule' -j '$(JOBS)' - $(MAKE) -C '$(1).native/gobject' -j '$(JOBS)' lib_LTLIBRARIES= install-exec - $(MAKE) -C '$(1).native/gio/xdgmime' -j '$(JOBS)' - $(MAKE) -C '$(1).native/gio' -j '$(JOBS)' glib-compile-schemas - $(MAKE) -C '$(1).native/gio' -j '$(JOBS)' glib-compile-resources - $(INSTALL) -m755 '$(1).native/gio/glib-compile-schemas' '$(PREFIX)/$(TARGET)/bin/' - $(INSTALL) -m755 '$(1).native/gio/glib-compile-resources' '$(PREFIX)/$(TARGET)/bin/' + CPPFLAGS='-I$(PREFIX)/$(TARGET)/include' \ + LDFLAGS='-L$(PREFIX)/$(TARGET)/lib' + $(SED) -i 's,#define G_ATOMIC.*,,' '$(BUILD_DIR)/config.h' + $(MAKE) -C '$(BUILD_DIR)/glib' -j '$(JOBS)' + $(MAKE) -C '$(BUILD_DIR)/gthread' -j '$(JOBS)' + $(MAKE) -C '$(BUILD_DIR)/gmodule' -j '$(JOBS)' + $(MAKE) -C '$(BUILD_DIR)/gobject' -j '$(JOBS)' lib_LTLIBRARIES= install-exec + $(MAKE) -C '$(BUILD_DIR)/gio/xdgmime' -j '$(JOBS)' + $(MAKE) -C '$(BUILD_DIR)/gio' -j '$(JOBS)' glib-compile-schemas + $(MAKE) -C '$(BUILD_DIR)/gio' -j '$(JOBS)' glib-compile-resources + $(INSTALL) -m755 '$(BUILD_DIR)/gio/glib-compile-schemas' '$(PREFIX)/$(TARGET)/bin/' + $(INSTALL) -m755 '$(BUILD_DIR)/gio/glib-compile-resources' '$(PREFIX)/$(TARGET)/bin/' endef -define $(PKG)_SYMLINK - ln -sf `which glib-genmarshal` '$(PREFIX)/$(TARGET)/bin/' - ln -sf `which glib-compile-schemas` '$(PREFIX)/$(TARGET)/bin/' - ln -sf `which glib-compile-resources` '$(PREFIX)/$(TARGET)/bin/' +define $(PKG)_BUILD_$(BUILD) + # glib tools need to be close to glib-cross version. + # easy to build on linux, but error-prone on darwin (and freebsd?) + $(if $(findstring darwin, $(OS_SHORT_NAME)), \ + $($(PKG)_BUILD_DARWIN), \ + $($(PKG)_BUILD_NATIVE)) endef define $(PKG)_BUILD - cd '$(1)' && NOCONFIGURE=true ./autogen.sh - rm -f '$(PREFIX)/$(TARGET)/bin/glib-*' - - # Detecting if these GLib tools are already available on host machine, - # either because of a host package installation or from an earlier MXE - # installation of GLib. - # If it is installed, we symlink it into the MXE bin/. - # If not, we build it. - $(if $(findstring y,\ - $(shell [ -x "`which glib-genmarshal`" ] && \ - [ -x "`which glib-compile-schemas`" ] && \ - [ -x "`which glib-compile-resources`" ] && echo y)), \ - $($(PKG)_SYMLINK), \ - $($(PKG)_NATIVE_BUILD)) + # other packages expect glib-tools in $(TARGET)/bin + rm -f '$(PREFIX)/$(TARGET)/bin/glib-*' + ln -sf '$(PREFIX)/$(BUILD)/bin/glib-genmarshal' '$(PREFIX)/$(TARGET)/bin/' + ln -sf '$(PREFIX)/$(BUILD)/bin/glib-compile-schemas' '$(PREFIX)/$(TARGET)/bin/' + ln -sf '$(PREFIX)/$(BUILD)/bin/glib-compile-resources' '$(PREFIX)/$(TARGET)/bin/' # cross build - cd '$(1)' && ./configure \ + cd '$(SOURCE_DIR)' && NOCONFIGURE=true ./autogen.sh + cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ $(MXE_CONFIGURE_OPTS) \ --with-threads=win32 \ --with-pcre=system \ @@ -98,11 +84,11 @@ define $(PKG)_BUILD GLIB_GENMARSHAL='$(PREFIX)/$(TARGET)/bin/glib-genmarshal' \ GLIB_COMPILE_SCHEMAS='$(PREFIX)/$(TARGET)/bin/glib-compile-schemas' \ GLIB_COMPILE_RESOURCES='$(PREFIX)/$(TARGET)/bin/glib-compile-resources' - $(MAKE) -C '$(1)/glib' -j '$(JOBS)' install sbin_PROGRAMS= noinst_PROGRAMS= - $(MAKE) -C '$(1)/gmodule' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= - $(MAKE) -C '$(1)/gthread' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= - $(MAKE) -C '$(1)/gobject' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= - $(MAKE) -C '$(1)/gio' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= MISC_STUFF= - $(MAKE) -C '$(1)' -j '$(JOBS)' install-pkgconfigDATA - $(MAKE) -C '$(1)/m4macros' install + $(MAKE) -C '$(BUILD_DIR)/glib' -j '$(JOBS)' install sbin_PROGRAMS= noinst_PROGRAMS= + $(MAKE) -C '$(BUILD_DIR)/gmodule' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= + $(MAKE) -C '$(BUILD_DIR)/gthread' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= + $(MAKE) -C '$(BUILD_DIR)/gobject' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= + $(MAKE) -C '$(BUILD_DIR)/gio' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= MISC_STUFF= + $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' install-pkgconfigDATA + $(MAKE) -C '$(BUILD_DIR)/m4macros' install endef |