46304cde3d
`+` is necessary to mark it as recurisve[0] so that fds are passed as expected. Passing explicit `-j` is dropped because it takes precedence over MAKEFLAGS and disables the job server integration. [0]: https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html
71 lines
2 KiB
Makefile
71 lines
2 KiB
Makefile
# parameters:
|
|
# $(1): lowercase package name
|
|
# $(2): uppercase package name
|
|
# $(3): 32/64, build type
|
|
# $(4): CROSS/<empty>, cross compile
|
|
#
|
|
define create-rules-meson
|
|
# Don't pass CROSS here, we need a native environment and we'll handle
|
|
# cross compilation below with the CROSS-prefixed variables.
|
|
$(call create-rules-common,$(1),$(2),$(3))
|
|
|
|
define $(2)_MESON_CROSS$(3)
|
|
cat <<EOF
|
|
[binaries]
|
|
ar = '$$$$CROSSAR'
|
|
c = '$$$$CROSSCC'
|
|
cpp = '$$$$CROSSCXX'
|
|
ld = '$$$$CROSSLD'
|
|
windres = '$$$$RC'
|
|
strip = '$$$$STRIP'
|
|
widl = '$$$$WIDL'
|
|
pkgconfig = '$$$$PKG_CONFIG'
|
|
|
|
[properties]
|
|
needs_exe_wrapper = true
|
|
c_args = [$$(call list-quote,$$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)))]
|
|
cpp_args = [$$(call list-quote,$$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)) -std=c++17)]
|
|
link_args = [$$(call list-quote,$$($(2)_LIBFLAGS$(3)) $$($(2)_LDFLAGS$(3)) $$($(2)_LDFLAGS) $$(CROSSLDFLAGS))]
|
|
pkg_config_libdir = '$$$$CROSSPKG_CONFIG_LIBDIR'
|
|
|
|
[host_machine]
|
|
system = 'windows'
|
|
cpu_family = '$$(MESON_CPU$(3))'
|
|
cpu = '$$(MESON_CPU$(3))'
|
|
endian = 'little'
|
|
EOF
|
|
endef
|
|
|
|
export $(2)_MESON_CROSS$(3)
|
|
|
|
$$($(2)_SRC)/meson.build: | $$(OBJ)/.$(1)-post-source
|
|
|
|
$$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/meson.build
|
|
@echo ":: configuring $(3)bit $(1)..." >&2
|
|
rm -rf "$$($(2)_OBJ$(3))/meson-private/coredata.dat"
|
|
|
|
echo "$$$$$(2)_MESON_CROSS$(3)" | env $$($(2)_ENV$(3)) sh >"$$($(2)_OBJ$(3))/cross-$(3).txt"
|
|
|
|
env $$($(2)_ENV$(3)) \
|
|
meson "$$($(2)_OBJ$(3))" "$$($(2)_SRC)" \
|
|
--prefix="$$($(2)_DST$(3))" \
|
|
--libdir="lib$(subst 32,,$(3))" \
|
|
--buildtype=plain \
|
|
$(if $(4),--cross-file="$$($(2)_OBJ$(3))/cross-$(3).txt",) \
|
|
$$($(2)_MESON_ARGS) \
|
|
$$($(2)_MESON_ARGS$(3)) \
|
|
$$(MESON_STRIP_ARG)
|
|
|
|
touch $$@
|
|
|
|
$$(OBJ)/.$(1)-build$(3):
|
|
@echo ":: building $(3)bit $(1)..." >&2
|
|
+env $$($(2)_ENV$(3)) \
|
|
ninja -C "$$($(2)_OBJ$(3))" install
|
|
touch $$@
|
|
endef
|
|
|
|
MESON_CPU32 = x86
|
|
MESON_CPU64 = x86_64
|
|
|
|
rules-meson = $(call create-rules-meson,$(1),$(call toupper,$(1)),$(2),$(3))
|