Proton/make/rules-meson.mk
Arkadiusz Hiler 66871e9de1 make/rules-meson.mk: Don't force the C++ standard.
We got some build failures with DXVK-NVAPI due to this. They even have
CI that uses Proton SDK images but since we create our own cross files
they were not anticipating that we may be forcing a C++ standard
version.

Since everything builds and none of the meson-using subprojects seems to
be setting the version via their provided corss files we should be good
to just drop it.
2025-02-03 22:42:44 +02:00

72 lines
2.0 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)))]
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))