summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorTony Theodore <tonyt@logyst.com>2017-12-06 01:48:32 (GMT)
committerGitHub <noreply@github.com>2017-12-06 01:48:32 (GMT)
commit000fad3a4785246a6ab2f4ee2358c90a89e55689 (patch)
treeb7c17357167dd54f8641d504c0007341759eb8bd /plugins
parent61ea68ffce0400ca9cc764da6ac9531eda752576 (diff)
parent49eb8618e16a5975c5324421f82645180c70b41e (diff)
downloadmxe-000fad3a4785246a6ab2f4ee2358c90a89e55689.zip
mxe-000fad3a4785246a6ab2f4ee2358c90a89e55689.tar.gz
mxe-000fad3a4785246a6ab2f4ee2358c90a89e55689.tar.bz2
Merge pull request #1995 from taisei-project/plugin-meson-wrapper
Add meson-wrapper plugin
Diffstat (limited to 'plugins')
-rw-r--r--plugins/meson-wrapper/conf/mxe-crossfile.meson.in23
-rw-r--r--plugins/meson-wrapper/conf/target-meson.in19
-rw-r--r--plugins/meson-wrapper/meson-wrapper.mk36
3 files changed, 78 insertions, 0 deletions
diff --git a/plugins/meson-wrapper/conf/mxe-crossfile.meson.in b/plugins/meson-wrapper/conf/mxe-crossfile.meson.in
new file mode 100644
index 0000000..7643ca2
--- /dev/null
+++ b/plugins/meson-wrapper/conf/mxe-crossfile.meson.in
@@ -0,0 +1,23 @@
+# This file is part of MXE. See LICENSE.md for licensing information.
+
+[binaries]
+c = '@PREFIX@/bin/@TARGET@-gcc'
+cpp = '@PREFIX@/bin/@TARGET@-g++'
+ar = '@PREFIX@/bin/@TARGET@-ar'
+ranlib = '@PREFIX@/bin/@TARGET@-ranlib'
+ld = '@PREFIX@/bin/@TARGET@-ld'
+strip = '@PREFIX@/bin/@TARGET@-strip'
+windres = '@PREFIX@/bin/@TARGET@-windres'
+windmc = '@PREFIX@/bin/@TARGET@-windmc'
+pkgconfig = '@PREFIX@/bin/@TARGET@-pkg-config'
+# MXE forbids this
+# exe_wrapper = 'wine'
+
+[properties]
+needs_exe_wrapper = true
+
+[host_machine]
+system = 'windows'
+cpu_family = '@CPU_FAMILY@'
+cpu = '@CPU@'
+endian = 'little'
diff --git a/plugins/meson-wrapper/conf/target-meson.in b/plugins/meson-wrapper/conf/target-meson.in
new file mode 100644
index 0000000..861daec
--- /dev/null
+++ b/plugins/meson-wrapper/conf/target-meson.in
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+echo "== Using MXE wrapper: @PREFIX@/bin/@TARGET@-meson"
+
+unset NO_MESON_CROSSFILE
+if echo -- "$@" | grep -Ewq "configure"; then
+ NO_MESON_CROSSFILE=1
+fi
+
+if [[ "$NO_MESON_CROSSFILE" == "1" ]]; then
+ echo "== Skip using Meson cross file: @MESON_CROSS_FILE@"
+ exec meson "$@"
+else
+ echo "== Using Meson cross file: @MESON_CROSS_FILE@"
+ exec meson \
+ --cross-file "@MESON_CROSS_FILE@" \
+ --default-library "@LIBTYPE@" \
+ --prefix "@PREFIX@/@TARGET@" \
+ "$@"
+fi
diff --git a/plugins/meson-wrapper/meson-wrapper.mk b/plugins/meson-wrapper/meson-wrapper.mk
new file mode 100644
index 0000000..81f2a83
--- /dev/null
+++ b/plugins/meson-wrapper/meson-wrapper.mk
@@ -0,0 +1,36 @@
+# This file is part of MXE. See LICENSE.md for licensing information.
+
+PKG := meson-wrapper
+$(PKG)_VERSION := 1
+$(PKG)_UPDATE := echo 1
+$(PKG)_TARGETS := $(MXE_TARGETS)
+$(PKG)_FILE_DEPS := $(wildcard $(PWD)/plugins/meson-wrapper/conf/*)
+
+define $(PKG)_BUILD
+ # create the Meson cross file
+ mkdir -p '$(PREFIX)/$(TARGET)/share/meson/mxe-conf.d'
+ cmake-configure-file \
+ -DLIBTYPE=$(if $(BUILD_SHARED),shared,static) \
+ -DPREFIX=$(PREFIX) \
+ -DTARGET=$(TARGET) \
+ -DBUILD=$(BUILD) \
+ -DCPU_FAMILY=$(strip \
+ $(if $(findstring x86_64,$(TARGET)),x86_64,\
+ $(if $(findstring i686,$(TARGET)),x86))) \
+ -DCPU=$(strip \
+ $(if $(findstring x86_64,$(TARGET)),x86_64,\
+ $(if $(findstring i686,$(TARGET)),i686))) \
+ -DINPUT='$(PWD)/plugins/meson-wrapper/conf/mxe-crossfile.meson.in' \
+ -DOUTPUT='$(PREFIX)/$(TARGET)/share/meson/mxe-crossfile.meson'
+
+ # create the prefixed Meson wrapper script
+ cmake-configure-file \
+ -DLIBTYPE=$(if $(BUILD_SHARED),shared,static) \
+ -DPREFIX=$(PREFIX) \
+ -DTARGET=$(TARGET) \
+ -DBUILD=$(BUILD) \
+ -DMESON_CROSS_FILE='$(PREFIX)/$(TARGET)/share/meson/mxe-crossfile.meson' \
+ -DINPUT='$(PWD)/plugins/meson-wrapper/conf/target-meson.in' \
+ -DOUTPUT='$(PREFIX)/bin/$(TARGET)-meson'
+ chmod 0755 '$(PREFIX)/bin/$(TARGET)-meson'
+endef