make: Use prefixes for archs in variables.

This commit is contained in:
Rémi Bernon 2025-01-12 11:37:25 +01:00 committed by Arkadiusz Hiler
parent ead580b59e
commit 82b173490c
11 changed files with 354 additions and 359 deletions

View File

@ -153,15 +153,15 @@ module: | $(BUILD_ROOT)/$(module)/lib/wine/x86_64-windows
module: | $(BUILD_ROOT)/$(module)/lib/wine/x86_64-unix
module: configure
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) module=$(module) module && \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib/wine/x86_64-windows/ && \
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE).so ]; then \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib/wine/x86_64-unix/; \
cp -f $(BUILD_DIR)/obj-wine-32/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-windows/ && \
cp -f $(BUILD_DIR)/obj-wine-64/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib/wine/x86_64-windows/ && \
if [ -e $(BUILD_DIR)/obj-wine-32/dlls/$(module)/$(MODULE_PEFILE).so ]; then \
cp -f $(BUILD_DIR)/obj-wine-32/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/obj-wine-64/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib/wine/x86_64-unix/; \
fi
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_SOFILE) ]; then \
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib/wine/x86_64-unix/; \
if [ -e $(BUILD_DIR)/obj-wine-32/dlls/$(module)/$(MODULE_SOFILE) ]; then \
cp -f $(BUILD_DIR)/obj-wine-32/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
cp -f $(BUILD_DIR)/obj-wine-64/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib/wine/x86_64-unix/; \
fi
any $(CONTAINERGOALS): configure

View File

@ -57,8 +57,8 @@ OPTIMIZE_FLAGS := -O2 -march=nocona -mtune=core-avx2 -mfpmath=sse
SANITY_FLAGS := -fwrapv -fno-strict-aliasing
DEBUG_FLAGS := -ggdb -ffunction-sections -fdata-sections -fno-omit-frame-pointer
COMMON_FLAGS = $(DEBUG_FLAGS) $(OPTIMIZE_FLAGS) $(SANITY_FLAGS) -ffile-prefix-map=$(CCACHE_BASEDIR)=.
COMMON_FLAGS32 := -mstackrealign
COMMON_FLAGS64 := -mcmodel=small
32_COMMON_FLAGS := -mstackrealign
64_COMMON_FLAGS := -mcmodel=small
ifneq ($(SUPPRESS_WARNINGS),)
COMMON_FLAGS += -w
@ -74,8 +74,8 @@ $(DST_DIR):
mkdir -p $@
ifeq ($(CONTAINER),1) # inside the container
BASE_SOURCE_DATE_EPOCH32 := $(BASE_SOURCE_DATE_EPOCH)
BASE_SOURCE_DATE_EPOCH64 := $(shell expr $(BASE_SOURCE_DATE_EPOCH) - 10)
32_SOURCE_DATE_EPOCH := $(BASE_SOURCE_DATE_EPOCH)
64_SOURCE_DATE_EPOCH := $(shell expr $(BASE_SOURCE_DATE_EPOCH) - 10)
# all, all-dist and dist are basically synonyms
.PHONY: all all-dist dist
@ -245,9 +245,9 @@ $(eval $(call rules-configure,ffmpeg,32))
$(eval $(call rules-configure,ffmpeg,64))
## Only use ffmpeg to build gst-libav; we don't ship it.
$(OBJ)/.ffmpeg-dist32:
$(OBJ)/.ffmpeg-32-dist:
touch $@
$(OBJ)/.ffmpeg-dist64:
$(OBJ)/.ffmpeg-64-dist:
touch $@
##
@ -274,14 +274,14 @@ $(eval $(call rules-source,gst_plugins_rs,$(SRCDIR)/gst-plugins-rs))
$(eval $(call rules-cargo,gst_plugins_rs,32))
$(eval $(call rules-cargo,gst_plugins_rs,64))
$(OBJ)/.gst_plugins_rs-post-build64:
mkdir -p $(GST_PLUGINS_RS_DST64)/lib/x86_64-linux-gnu/gstreamer-1.0/
cp -a $(GST_PLUGINS_RS_OBJ64)/x86_64-unknown-linux-gnu/release/libgstdav1d.so $(GST_PLUGINS_RS_DST64)/lib/x86_64-linux-gnu/gstreamer-1.0/
$(OBJ)/.gst_plugins_rs-64-post-build:
mkdir -p $(GST_PLUGINS_RS_64_DST)/lib/x86_64-linux-gnu/gstreamer-1.0/
cp -a $(GST_PLUGINS_RS_64_OBJ)/x86_64-unknown-linux-gnu/release/libgstdav1d.so $(GST_PLUGINS_RS_64_DST)/lib/x86_64-linux-gnu/gstreamer-1.0/
touch $@
$(OBJ)/.gst_plugins_rs-post-build32:
mkdir -p $(GST_PLUGINS_RS_DST32)/lib/i386-linux-gnu/gstreamer-1.0/
cp -a $(GST_PLUGINS_RS_OBJ32)/i686-unknown-linux-gnu/release/libgstdav1d.so $(GST_PLUGINS_RS_DST32)/lib/i386-linux-gnu/gstreamer-1.0/
$(OBJ)/.gst_plugins_rs-32-post-build:
mkdir -p $(GST_PLUGINS_RS_32_DST)/lib/i386-linux-gnu/gstreamer-1.0/
cp -a $(GST_PLUGINS_RS_32_OBJ)/i686-unknown-linux-gnu/release/libgstdav1d.so $(GST_PLUGINS_RS_32_DST)/lib/i386-linux-gnu/gstreamer-1.0/
touch $@
@ -347,13 +347,13 @@ WINEOPENXR_DEPENDS = wine openxr
$(eval $(call rules-source,wineopenxr,$(SRCDIR)/wineopenxr))
$(eval $(call rules-makedep,wineopenxr,64,CROSS))
DIST_WINEOPENXR_JSON64 := $(DIST_PREFIX)/drive_c/openxr/wineopenxr64.json
DIST_WINEOPENXR64_JSON := $(DIST_PREFIX)/drive_c/openxr/wineopenxr64.json
$(WINEOPENXR_SRC)/wineopenxr64.json: wineopenxr
$(DIST_WINEOPENXR_JSON64): $(WINEOPENXR_SRC)/wineopenxr64.json default_pfx
$(DIST_WINEOPENXR64_JSON): $(WINEOPENXR_SRC)/wineopenxr64.json default_pfx
mkdir -p $(dir $@)
cp -a $< $@
all-dist: $(DIST_WINEOPENXR_JSON64)
all-dist: $(DIST_WINEOPENXR64_JSON)
##
@ -392,11 +392,11 @@ $(OBJ)/.steamexe-post-build64:
$(eval $(call rules-source,piper,$(SRCDIR)/piper))
$(eval $(call rules-cmake,piper,64))
$(OBJ)/.piper-post-build64:
mkdir -p $(PIPER_DST64)/lib/$(TARGET_64)
mv $(PIPER_DST64)/*.so* $(PIPER_DST64)/lib/$(TARGET_64)
$(OBJ)/.piper-64-post-build:
mkdir -p $(PIPER_64_DST)/lib/$(64_TARGET)
mv $(PIPER_64_DST)/*.so* $(PIPER_64_DST)/lib/$(64_TARGET)
mkdir -p $(DST_DIR)/share
cp -a $(PIPER_DST64)/{espeak-ng-data,libtashkeel_model.ort} $(DST_DIR)/share/
cp -a $(PIPER_64_DST)/{espeak-ng-data,libtashkeel_model.ort} $(DST_DIR)/share/
touch $@
##
@ -427,19 +427,19 @@ WINE_AUTOCONF_ARGS = \
--with-mingw \
--disable-tests
WINE_AUTOCONF_ARGS32 = \
VKD3D_PE_CFLAGS="-I$(VULKAN_HEADERS_DST32)/include -I$(VKD3D_DST32)/include/vkd3d" \
VKD3D_PE_LIBS="-L$(VKD3D_LIBDIR32)/vkd3d/i386-windows -l:libvkd3d-1.dll -l:libvkd3d-shader-1.dll"
WINE_32_AUTOCONF_ARGS = \
VKD3D_PE_CFLAGS="-I$(VULKAN_HEADERS_32_DST)/include -I$(VKD3D_32_DST)/include/vkd3d" \
VKD3D_PE_LIBS="-L$(VKD3D_32_LIBDIR)/vkd3d/i386-windows -l:libvkd3d-1.dll -l:libvkd3d-shader-1.dll"
WINE_AUTOCONF_ARGS64 = --enable-win64 \
VKD3D_PE_CFLAGS="-I$(VULKAN_HEADERS_DST64)/include -I$(VKD3D_DST64)/include/vkd3d" \
VKD3D_PE_LIBS="-L$(VKD3D_LIBDIR64)/vkd3d/x86_64-windows -l:libvkd3d-1.dll -l:libvkd3d-shader-1.dll"
WINE_64_AUTOCONF_ARGS = --enable-win64 \
VKD3D_PE_CFLAGS="-I$(VULKAN_HEADERS_64_DST)/include -I$(VKD3D_64_DST)/include/vkd3d" \
VKD3D_PE_LIBS="-L$(VKD3D_64_LIBDIR)/vkd3d/x86_64-windows -l:libvkd3d-1.dll -l:libvkd3d-shader-1.dll"
WINE_DEPENDS = gst_orc gstreamer gst_base vkd3d ffmpeg
WINE_DEPENDS64 = piper
WINE_64_DEPENDS = piper
WINE_LIBDIR32 = $(WINE_DST32)/lib
WINE_LIBDIR64 = $(WINE_DST64)/lib
WINE_32_LIBDIR = $(WINE_32_DST)/lib
WINE_64_LIBDIR = $(WINE_64_DST)/lib
$(eval $(call rules-source,wine,$(SRCDIR)/wine))
$(eval $(call rules-autoconf,wine,32))
@ -451,19 +451,19 @@ $(OBJ)/.wine-post-source:
-cd $(WINE_SRC) && tools/make_specfiles
touch $@
$(OBJ)/.wine-post-build64:
$(OBJ)/.wine-64-post-build:
mkdir -p $(DST_DIR)/{bin,share}
$(call install-strip,$(WINE_DST64)/bin/wine64,$(DST_DIR)/bin)
$(call install-strip,$(WINE_DST64)/bin/wine64-preloader,$(DST_DIR)/bin)
$(call install-strip,$(WINE_DST64)/bin/wineserver,$(DST_DIR)/bin)
cp -a $(WINE_DST64)/share/wine $(DST_DIR)/share
cp -a $(WINE_DST64)/bin/msidb $(DST_DIR)/bin
$(call install-strip,$(WINE_64_DST)/bin/wine64,$(DST_DIR)/bin)
$(call install-strip,$(WINE_64_DST)/bin/wine64-preloader,$(DST_DIR)/bin)
$(call install-strip,$(WINE_64_DST)/bin/wineserver,$(DST_DIR)/bin)
cp -a $(WINE_64_DST)/share/wine $(DST_DIR)/share
cp -a $(WINE_64_DST)/bin/msidb $(DST_DIR)/bin
touch $@
$(OBJ)/.wine-post-build32:
$(OBJ)/.wine-32-post-build:
mkdir -p $(DST_DIR)/bin
$(call install-strip,$(WINE_DST32)/bin/wine,$(DST_DIR)/bin)
$(call install-strip,$(WINE_DST32)/bin/wine-preloader,$(DST_DIR)/bin)
$(call install-strip,$(WINE_32_DST)/bin/wine,$(DST_DIR)/bin)
$(call install-strip,$(WINE_32_DST)/bin/wine-preloader,$(DST_DIR)/bin)
touch $@
@ -484,14 +484,14 @@ $(eval $(call rules-makedep,vrclient,64,CROSS))
##
# wine builds DLLs with the same names, we need to differentiate the timestamps
DXVK_SOURCE_DATE_EPOCH32 := $(shell expr $(BASE_SOURCE_DATE_EPOCH32) - 1)
DXVK_SOURCE_DATE_EPOCH64 := $(shell expr $(BASE_SOURCE_DATE_EPOCH64) - 1)
DXVK_32_SOURCE_DATE_EPOCH := $(shell expr $(32_SOURCE_DATE_EPOCH) - 1)
DXVK_64_SOURCE_DATE_EPOCH := $(shell expr $(64_SOURCE_DATE_EPOCH) - 1)
DXVK_SOURCE_ARGS = \
--exclude version.h.in \
DXVK_MESON_ARGS32 = --bindir=$(DXVK_DST32)/lib/wine/dxvk/i386-windows
DXVK_MESON_ARGS64 = --bindir=$(DXVK_DST64)/lib/wine/dxvk/x86_64-windows
DXVK_32_MESON_ARGS = --bindir=$(DXVK_32_DST)/lib/wine/dxvk/i386-windows
DXVK_64_MESON_ARGS = --bindir=$(DXVK_64_DST)/lib/wine/dxvk/x86_64-windows
DXVK_DEPENDS = glslang
$(eval $(call rules-source,dxvk,$(SRCDIR)/dxvk))
@ -511,8 +511,8 @@ $(OBJ)/.dxvk-post-source:
## dxvk-nvapi
##
DXVK_NVAPI_MESON_ARGS32 = --bindir=$(DXVK_NVAPI_DST32)/lib/wine/nvapi/i386-windows
DXVK_NVAPI_MESON_ARGS64 = --bindir=$(DXVK_NVAPI_DST64)/lib/wine/nvapi/x86_64-windows
DXVK_NVAPI_32_MESON_ARGS = --bindir=$(DXVK_NVAPI_32_DST)/lib/wine/nvapi/i386-windows
DXVK_NVAPI_64_MESON_ARGS = --bindir=$(DXVK_NVAPI_64_DST)/lib/wine/nvapi/x86_64-windows
$(eval $(call rules-source,dxvk-nvapi,$(SRCDIR)/dxvk-nvapi))
$(eval $(call rules-meson,dxvk-nvapi,32,CROSS))
@ -556,23 +556,23 @@ VKD3D_CFLAGS = -fno-lto
VKD3D_LDFLAGS = -static-libgcc $(CROSSLDFLAGS)
VKD3D_DEPENDS = vulkan-headers spirv-headers
VKD3D_LIBDIR32 = $(VKD3D_DST32)/lib
VKD3D_LIBDIR64 = $(VKD3D_DST64)/lib
VKD3D_32_LIBDIR = $(VKD3D_32_DST)/lib
VKD3D_64_LIBDIR = $(VKD3D_64_DST)/lib
$(eval $(call rules-source,vkd3d,$(SRCDIR)/vkd3d))
$(eval $(call rules-autoconf,vkd3d,32,CROSS))
$(eval $(call rules-autoconf,vkd3d,64,CROSS))
$(OBJ)/.vkd3d-post-build64:
mkdir -p $(VKD3D_LIBDIR64)/vkd3d/x86_64-windows
mv $(VKD3D_DST64)/bin/libvkd3d-1.dll $(VKD3D_LIBDIR64)/vkd3d/x86_64-windows
mv $(VKD3D_DST64)/bin/libvkd3d-shader-1.dll $(VKD3D_LIBDIR64)/vkd3d/x86_64-windows
$(OBJ)/.vkd3d-64-post-build:
mkdir -p $(VKD3D_64_LIBDIR)/vkd3d/x86_64-windows
mv $(VKD3D_64_DST)/bin/libvkd3d-1.dll $(VKD3D_64_LIBDIR)/vkd3d/x86_64-windows
mv $(VKD3D_64_DST)/bin/libvkd3d-shader-1.dll $(VKD3D_64_LIBDIR)/vkd3d/x86_64-windows
touch $@
$(OBJ)/.vkd3d-post-build32:
mkdir -p $(VKD3D_LIBDIR32)/vkd3d/i386-windows
mv $(VKD3D_DST32)/bin/libvkd3d-1.dll $(VKD3D_LIBDIR32)/vkd3d/i386-windows
mv $(VKD3D_DST32)/bin/libvkd3d-shader-1.dll $(VKD3D_LIBDIR32)/vkd3d/i386-windows
$(OBJ)/.vkd3d-32-post-build:
mkdir -p $(VKD3D_32_LIBDIR)/vkd3d/i386-windows
mv $(VKD3D_32_DST)/bin/libvkd3d-1.dll $(VKD3D_32_LIBDIR)/vkd3d/i386-windows
mv $(VKD3D_32_DST)/bin/libvkd3d-shader-1.dll $(VKD3D_32_LIBDIR)/vkd3d/i386-windows
touch $@
##
@ -580,15 +580,15 @@ $(OBJ)/.vkd3d-post-build32:
##
# wine builds DLLs with the same names, we need to differentiate the timestamps
VKD3D_PROTON_SOURCE_DATE_EPOCH32 := $(shell expr $(BASE_SOURCE_DATE_EPOCH32) - 2)
VKD3D_PROTON_SOURCE_DATE_EPOCH64 := $(shell expr $(BASE_SOURCE_DATE_EPOCH64) - 2)
VKD3D_PROTON_32_SOURCE_DATE_EPOCH := $(shell expr $(32_SOURCE_DATE_EPOCH) - 2)
VKD3D_PROTON_64_SOURCE_DATE_EPOCH := $(shell expr $(64_SOURCE_DATE_EPOCH) - 2)
VKD3D_PROTON_SOURCE_ARGS = \
--exclude vkd3d_build.h.in \
--exclude vkd3d_version.h.in \
VKD3D_PROTON_MESON_ARGS32 = --bindir=$(VKD3D_PROTON_DST32)/lib/wine/vkd3d-proton/i386-windows
VKD3D_PROTON_MESON_ARGS64 = --bindir=$(VKD3D_PROTON_DST64)/lib/wine/vkd3d-proton/x86_64-windows
VKD3D_PROTON_32_MESON_ARGS = --bindir=$(VKD3D_PROTON_32_DST)/lib/wine/vkd3d-proton/i386-windows
VKD3D_PROTON_64_MESON_ARGS = --bindir=$(VKD3D_PROTON_64_DST)/lib/wine/vkd3d-proton/x86_64-windows
VKD3D_PROTON_DEPENDS = glslang
ifneq ($(UNSTRIPPED_BUILD),)
@ -625,20 +625,20 @@ $(eval $(call rules-winemaker,battleye,32,beclient.dll))
$(eval $(call rules-winemaker,battleye,64,beclient_x64.dll))
$(OBJ)/.battleye-post-source:
mkdir -p $(BATTLEYE_OBJ32) && cp -a $(BATTLEYE_SRC)/beclient.spec $(BATTLEYE_OBJ32)/beclient.spec
mkdir -p $(BATTLEYE_OBJ64) && cp -a $(BATTLEYE_SRC)/beclient.spec $(BATTLEYE_OBJ64)/beclient_x64.spec
mkdir -p $(BATTLEYE_32_OBJ) && cp -a $(BATTLEYE_SRC)/beclient.spec $(BATTLEYE_32_OBJ)/beclient.spec
mkdir -p $(BATTLEYE_64_OBJ) && cp -a $(BATTLEYE_SRC)/beclient.spec $(BATTLEYE_64_OBJ)/beclient_x64.spec
touch $@
$(OBJ)/.battleye-post-build64:
$(OBJ)/.battleye-64-post-build:
mkdir -p $(OBJ)/dist-battleye/v1
cp -r $(BATTLEYE_DST64)/* $(OBJ)/dist-battleye/v1/
rm -rf $(BATTLEYE_DST64)/*
cp -r $(BATTLEYE_64_DST)/* $(OBJ)/dist-battleye/v1/
rm -rf $(BATTLEYE_64_DST)/*
touch $@
$(OBJ)/.battleye-post-build32:
$(OBJ)/.battleye-32-post-build:
mkdir -p $(OBJ)/dist-battleye/v1
cp -r $(BATTLEYE_DST32)/* $(OBJ)/dist-battleye/v1/
rm -rf $(BATTLEYE_DST32)/*
cp -r $(BATTLEYE_32_DST)/* $(OBJ)/dist-battleye/v1/
rm -rf $(BATTLEYE_32_DST)/*
touch $@
endif
@ -656,26 +656,26 @@ $(eval $(call create-rules-common,eac,EAC,64))
$(eval $(call create-rules-common,eac,EAC,32))
$(OBJ)/.eac-build64:
$(OBJ)/.eac-64-build:
@echo ":: building 64bit eac..." >&2
rsync -arx "$(EAC_SRC)/" "$(EAC_OBJ64)/"
env $(EAC_ENV64) \
$(MAKE) -C "$(EAC_OBJ64)" WINE_OBJ="$(WINE_OBJ64)" HOST="x86_64-w64-mingw32" CROSSCXX="x86_64-w64-mingw32-g++" BIT="64"
rsync -arx "$(EAC_SRC)/" "$(EAC_64_OBJ)/"
env $(EAC_64_ENV) \
$(MAKE) -C "$(EAC_64_OBJ)" WINE_OBJ="$(WINE_64_OBJ)" HOST="x86_64-w64-mingw32" CROSSCXX="x86_64-w64-mingw32-g++" BIT="64"
mkdir -p $(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu
$(call install-strip,$(EAC_OBJ64)/easyanticheat.so,$(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu)
$(call install-strip,$(EAC_OBJ64)/easyanticheat.dll,$(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu)
$(call install-strip,$(EAC_64_OBJ)/easyanticheat.so,$(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu)
$(call install-strip,$(EAC_64_OBJ)/easyanticheat.dll,$(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu)
cp $(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu/easyanticheat.so $(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu/easyanticheat_x64.so
cp $(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu/easyanticheat.dll $(OBJ)/dist-eac/v2/lib/x86_64-linux-gnu/easyanticheat_x64.dll
touch $@
$(OBJ)/.eac-build32:
$(OBJ)/.eac-32-build:
@echo ":: building 32bit eac..." >&2
rsync -arx "$(EAC_SRC)/" "$(EAC_OBJ32)/"
env $(EAC_ENV32) \
$(MAKE) -C "$(EAC_OBJ32)" WINE_OBJ="$(WINE_OBJ32)" HOST="i686-w64-mingw32" CROSSCXX="i686-w64-mingw32-g++" BIT="32"
rsync -arx "$(EAC_SRC)/" "$(EAC_32_OBJ)/"
env $(EAC_32_ENV) \
$(MAKE) -C "$(EAC_32_OBJ)" WINE_OBJ="$(WINE_32_OBJ)" HOST="i686-w64-mingw32" CROSSCXX="i686-w64-mingw32-g++" BIT="32"
mkdir -p $(OBJ)/dist-eac/v2/lib32
$(call install-strip,$(EAC_OBJ32)/easyanticheat.so,$(OBJ)/dist-eac/v2/lib32)
$(call install-strip,$(EAC_OBJ32)/easyanticheat.dll,$(OBJ)/dist-eac/v2/lib32)
$(call install-strip,$(EAC_32_OBJ)/easyanticheat.so,$(OBJ)/dist-eac/v2/lib32)
$(call install-strip,$(EAC_32_OBJ)/easyanticheat.dll,$(OBJ)/dist-eac/v2/lib32)
mv $(OBJ)/dist-eac/v2/lib32/easyanticheat.so $(OBJ)/dist-eac/v2/lib32/easyanticheat_x86.so
mv $(OBJ)/dist-eac/v2/lib32/easyanticheat.dll $(OBJ)/dist-eac/v2/lib32/easyanticheat_x86.dll
touch $@
@ -691,16 +691,16 @@ SYMSTORE_DEPENDS = wine
$(eval $(call rules-source,symstore,$(SRCDIR)/symstore))
$(eval $(call create-rules-common,symstore,SYMSTORE,64))
$(OBJ)/.symstore-build64:
$(OBJ)/.symstore-64-build:
@echo ":: building symstore helper..." >&2
rsync -arx "$(SYMSTORE_SRC)/" "$(SYMSTORE_OBJ64)/"
$(MAKE) -C "$(SYMSTORE_OBJ64)" SYMSTORE_CFLAGS="-I$(WINE_SRC)/include -I$(WINE_OBJ64)/include"
rsync -arx "$(SYMSTORE_SRC)/" "$(SYMSTORE_64_OBJ)/"
$(MAKE) -C "$(SYMSTORE_64_OBJ)" SYMSTORE_CFLAGS="-I$(WINE_SRC)/include -I$(WINE_64_OBJ)/include"
touch $@
.PHONY: symstore-tarball
symstore-tarball:
mkdir -p $(OBJ)/symstore/$(BUILD_NAME)
$(SYMSTORE_OBJ64)/symstore --skip-managed $(DST_BASE) $(OBJ)/symstore/$(BUILD_NAME)
$(SYMSTORE_64_OBJ)/symstore --skip-managed $(DST_BASE) $(OBJ)/symstore/$(BUILD_NAME)
cd $(OBJ)/symstore/$(BUILD_NAME) && zip -r ../$(BUILD_NAME)-symstore.zip . >& /dev/null
##
@ -929,35 +929,33 @@ all-dist: $(DIST_FONTS)
##
GECKO_VER := 2.47.4
GECKO32_TARBALL := wine-gecko-$(GECKO_VER)-x86.tar.xz
GECKO64_TARBALL := wine-gecko-$(GECKO_VER)-x86_64.tar.xz
GECKO64_TARBALL_URL := https://dl.winehq.org/wine/wine-gecko/$(GECKO_VER)/$(GECKO64_TARBALL)
GECKO32_TARBALL_URL := https://dl.winehq.org/wine/wine-gecko/$(GECKO_VER)/$(GECKO32_TARBALL)
DIST_GECKO_DIR := $(DST_DIR)/share/wine/gecko
DIST_GECKO32 := $(OBJ)/.gecko-dist32
DIST_GECKO64 := $(OBJ)/.gecko-dist64
GECKO_32_TARBALL := wine-gecko-$(GECKO_VER)-x86.tar.xz
GECKO_64_TARBALL := wine-gecko-$(GECKO_VER)-x86_64.tar.xz
GECKO_64_TARBALL_URL := https://dl.winehq.org/wine/wine-gecko/$(GECKO_VER)/$(GECKO_64_TARBALL)
GECKO_32_TARBALL_URL := https://dl.winehq.org/wine/wine-gecko/$(GECKO_VER)/$(GECKO_32_TARBALL)
GECKO_DST := $(DST_DIR)/share/wine/gecko
$(SRC)/contrib/$(GECKO64_TARBALL):
$(SRC)/contrib/$(GECKO_64_TARBALL):
mkdir -p $(dir $@)
wget --no-use-server-timestamps -O $@ $(GECKO64_TARBALL_URL) || (rm $@; false)
wget --no-use-server-timestamps -O $@ $(GECKO_64_TARBALL_URL) || (rm $@; false)
$(SRC)/contrib/$(GECKO32_TARBALL):
$(SRC)/contrib/$(GECKO_32_TARBALL):
mkdir -p $(dir $@)
wget --no-use-server-timestamps -O $@ $(GECKO32_TARBALL_URL) || (rm $@; false)
wget --no-use-server-timestamps -O $@ $(GECKO_32_TARBALL_URL) || (rm $@; false)
$(DIST_GECKO32): $(SRC)/contrib/$(GECKO32_TARBALL)
mkdir -p $(DIST_GECKO_DIR)
rm -rf $(DIST_GECKO_DIR)/wine-gecko-$(GECKO_VER)-x86
tar --no-same-owner -xf $< -C $(DIST_GECKO_DIR)
$(OBJ)/.gecko-32-dist: $(SRC)/contrib/$(GECKO_32_TARBALL)
mkdir -p $(GECKO_DST)
rm -rf $(GECKO_DST)/wine-gecko-$(GECKO_VER)-x86
tar --no-same-owner -xf $< -C $(GECKO_DST)
touch $@
$(DIST_GECKO64): $(SRC)/contrib/$(GECKO64_TARBALL)
mkdir -p $(DIST_GECKO_DIR)
rm -rf $(DIST_GECKO_DIR)/wine-gecko-$(GECKO_VER)-x86_64
tar --no-same-owner -xf $< -C $(DIST_GECKO_DIR)
$(OBJ)/.gecko-64-dist: $(SRC)/contrib/$(GECKO_64_TARBALL)
mkdir -p $(GECKO_DST)
rm -rf $(GECKO_DST)/wine-gecko-$(GECKO_VER)-x86_64
tar --no-same-owner -xf $< -C $(GECKO_DST)
touch $@
all-dist: $(DIST_GECKO32) $(DIST_GECKO64)
all-dist: $(OBJ)/.gecko-32-dist $(OBJ)/.gecko-64-dist
##
@ -1011,43 +1009,41 @@ all-dist: $(DIST_XALIA)
##
ICU_VER := 6.8.2
DIST_ICU64_DIR := $(DST_LIBDIR)/wine/icu/x86_64-windows
DIST_ICU64 := $(OBJ)/.icu-dist64
ICU64_TARBALL := icu-$(ICU_VER)-x86_64.tar.xz
DIST_ICU32_DIR := $(DST_LIBDIR)/wine/icu/i386-windows
DIST_ICU32 := $(OBJ)/.icu-dist32
ICU32_TARBALL := icu-$(ICU_VER)-x86.tar.xz
ICU_64_DIST_DIR := $(DST_LIBDIR)/wine/icu/x86_64-windows
ICU_64_TARBALL := icu-$(ICU_VER)-x86_64.tar.xz
ICU_32_DIST_DIR := $(DST_LIBDIR)/wine/icu/i386-windows
ICU_32_TARBALL := icu-$(ICU_VER)-x86.tar.xz
$(DIST_ICU64): $(SRC)/icu/$(ICU64_TARBALL)
mkdir -p $(DIST_ICU64_DIR)
rm -rf $(DIST_ICU64_DIR)/*.dll
tar --no-same-owner -xf $< -C $(DIST_ICU64_DIR)
$(OBJ)/.icu-64-dist: $(SRC)/icu/$(ICU_64_TARBALL)
mkdir -p $(ICU_64_DIST_DIR)
rm -rf $(ICU_64_DIST_DIR)/*.dll
tar --no-same-owner -xf $< -C $(ICU_64_DIST_DIR)
touch $@
$(DIST_ICU32): $(SRC)/icu/$(ICU32_TARBALL)
mkdir -p $(DIST_ICU32_DIR)
rm -rf $(DIST_ICU32_DIR)/*.dll
tar --no-same-owner -xf $< -C $(DIST_ICU32_DIR)
$(OBJ)/.icu-32-dist: $(SRC)/icu/$(ICU_32_TARBALL)
mkdir -p $(ICU_32_DIST_DIR)
rm -rf $(ICU_32_DIST_DIR)/*.dll
tar --no-same-owner -xf $< -C $(ICU_32_DIST_DIR)
touch $@
all-dist: $(DIST_ICU64) $(DIST_ICU32)
all-dist: $(OBJ)/.icu-64-dist $(OBJ)/.icu-32-dist
##
## openvr
##
DIST_OVR32 := $(DST_LIBDIR)/wine/dxvk/i386-windows/openvr_api_dxvk.dll
$(DIST_OVR32): $(SRCDIR)/openvr/bin/win32/openvr_api.dll | $(DST_DIR)
OVR_32_DIST := $(DST_LIBDIR)/wine/dxvk/i386-windows/openvr_api_dxvk.dll
$(OVR_32_DIST): $(SRCDIR)/openvr/bin/win32/openvr_api.dll | $(DST_DIR)
mkdir -p $(DST_LIBDIR)/wine/dxvk/i386-windows
cp -af $< $@
DIST_OVR64 := $(DST_LIBDIR)/wine/dxvk/x86_64-windows/openvr_api_dxvk.dll
$(DIST_OVR64): $(SRCDIR)/openvr/bin/win64/openvr_api.dll | $(DST_DIR)
OVR_64_DIST := $(DST_LIBDIR)/wine/dxvk/x86_64-windows/openvr_api_dxvk.dll
$(OVR_64_DIST): $(SRCDIR)/openvr/bin/win64/openvr_api.dll | $(DST_DIR)
mkdir -p $(DST_LIBDIR)/wine/dxvk/x86_64-windows
cp -af $< $@
all-dist: $(DIST_OVR32) $(DIST_OVR64)
all-dist: $(OVR_32_DIST) $(OVR_64_DIST)
##
@ -1167,11 +1163,11 @@ redist: all
.PHONY: module32 module64 module
module32: | all-source wine-configure32
+$(BEAR) $(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ32)/dlls/$(module)
module32: | all-source wine-32-configure
+$(BEAR) $(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_32_OBJ)/dlls/$(module)
module64: | all-source wine-configure64
+$(BEAR) $(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ64)/dlls/$(module)
module64: | all-source wine-64-configure
+$(BEAR) $(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_64_OBJ)/dlls/$(module)
module: | all-source wine-configure
module: module32 module64

View File

@ -11,27 +11,27 @@ $$($(2)_SRC)/configure: $$($(2)_ORIGIN)/configure.ac | $$(OBJ)/.$(1)-post-source
@echo ":: autoreconfing $(1)..." >&2
cd "$$($(2)_SRC)" && autoreconf -fiv
$$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/configure
@echo ":: configuring $(3)bit $(1)..." >&2
rm -rf "$$($(2)_OBJ$(3))/config.cache"
$$(OBJ)/.$(1)-$(3)-configure: $$($(2)_SRC)/configure
@echo ":: configuring $(1)-$(3)..." >&2
rm -rf "$$($(2)_$(3)_OBJ)/config.cache"
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$($(2)_SRC)/configure $(--quiet?) -C \
--prefix="$$($(2)_DST$(3))" \
--libdir="$$($(2)_DST$(3))/lib" \
--host="$$(TARGET_$(4)$(3))" \
$$($(2)_ENV$(3)) \
$$(AUTOCONF_ARGS_$(3)) \
--prefix="$$($(2)_$(3)_DST)" \
--libdir="$$($(2)_$(3)_DST)/lib" \
--host="$$($(4)$(3)_TARGET)" \
$$($(2)_$(3)_ENV) \
$$($(3)_AUTOCONF_ARGS) \
$$($(2)_AUTOCONF_ARGS) \
$$($(2)_AUTOCONF_ARGS$(3)) \
$$($(2)_$(3)_AUTOCONF_ARGS)
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
+cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
+cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(BEAR) $$(MAKE)
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(MAKE) install
touch $$@
endef

View File

@ -6,27 +6,26 @@
define create-rules-cargo
$(call create-rules-common,$(1),$(2),$(3))
$$(OBJ)/.$(1)-configure$(3):
@echo ":: configuring $(3)bit $(1)..." >&2
$$(OBJ)/.$(1)-$(3)-configure:
@echo ":: configuring $(1)-$(3)..." >&2
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
cd $$($(2)_SRC) && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
cd $$($(2)_SRC) && env $$($(2)_$(3)_ENV) \
cargo build $(--quiet?) --release \
$$(filter -j%,$$(MAKEFLAGS)) \
--target-dir $$($(2)_OBJ$(3)) \
$$(CARGO_ARGS_$(3)) \
--target-dir $$($(2)_$(3)_OBJ) \
$$($(3)_CARGO_ARGS) \
$$($(2)_CARGO_ARGS) \
$$($(2)_CARGO_ARGS$(3)) \
$$($(2)_$(3)_CARGO_ARGS)
touch $$@
endef
rules-cargo = $(call create-rules-cargo,$(1),$(call toupper,$(1)),$(2))
CARGO_TARGET_32 := i686-unknown-linux-gnu
CARGO_TARGET_64 := x86_64-unknown-linux-gnu
32_CARGO_TARGET := i686-unknown-linux-gnu
64_CARGO_TARGET := x86_64-unknown-linux-gnu
CARGO_ARGS_32 := --target $(CARGO_TARGET_32)
CARGO_ARGS_64 := --target $(CARGO_TARGET_64)
32_CARGO_ARGS := --target $(32_CARGO_TARGET)
64_CARGO_ARGS := --target $(64_CARGO_TARGET)

View File

@ -8,29 +8,29 @@ define create-rules-cmake
$(call create-rules-common,$(1),$(2),$(3),$(4))
$$($(2)_SRC)/CMakeLists.txt: | $$(OBJ)/.$(1)-post-source
$$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/CMakeLists.txt
@echo ":: configuring $(3)bit $(1)..." >&2
rm -rf "$$($(2)_OBJ$(3))/CMakeCache.txt"
$$(OBJ)/.$(1)-$(3)-configure: $$($(2)_SRC)/CMakeLists.txt
@echo ":: configuring $(1)-$(3)..." >&2
rm -rf "$$($(2)_$(3)_OBJ)/CMakeCache.txt"
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
cmake "$$($(2)_SRC)" \
-DCMAKE_INSTALL_PREFIX="$$($(2)_DST$(3))" \
-DCMAKE_INSTALL_LIBDIR="lib/$$(LIBDIR_$(4)$(3))" \
-DCMAKE_INSTALL_PREFIX="$$($(2)_$(3)_DST)" \
-DCMAKE_INSTALL_LIBDIR="lib/$$($(4)$(3)_LIBDIR)" \
-DCMAKE_BUILD_TYPE=plain \
-DCMAKE_SYSTEM_NAME=$(if $(4),Windows,) \
-DCMAKE_SHARED_LIBRARY_PREFIX_C=$(if $(4),,lib) \
-DCMAKE_IMPORT_LIBRARY_PREFIX_C=$(if $(4),,lib) \
$$(CMAKE_ARGS_$(3)) \
$$($(3)_CMAKE_ARGS) \
$$($(2)_CMAKE_ARGS) \
$$($(2)_CMAKE_ARGS$(3)) \
$$($(2)_$(3)_CMAKE_ARGS)
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(MAKE)
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(MAKE) install
touch $$@
endef

View File

@ -4,98 +4,98 @@
# $(3): 32/64, build type
# $(4): CROSS/<empty>, cross compile
define create-rules-common
$(2)_OBJ$(3) := $$(OBJ)/obj-$(1)$(3)
$(2)_DST$(3) := $$(OBJ)/dst-$(1)$(3)
$(2)_DEPS$(3) := $$(call toupper,$$($(2)_DEPENDS)) $$(call toupper,$$($(2)_DEPENDS$(3)))
$(2)_$(3)_OBJ := $$(OBJ)/obj-$(1)-$(3)
$(2)_$(3)_DST := $$(OBJ)/dst-$(1)-$(3)
$(2)_$(3)_DEPS := $$(call toupper,$$($(2)_DEPENDS)) $$(call toupper,$$($(2)_$(3)_DEPENDS))
$(2)_BINDIR$(3) ?= $$($(2)_DST$(3))/bin
$(2)_LIBDIR$(3) ?= $$($(2)_DST$(3))/lib
$(2)_INCDIR$(3) ?= $$($(2)_DST$(3))/include
$(2)_$(3)_BINDIR ?= $$($(2)_$(3)_DST)/bin
$(2)_$(3)_LIBDIR ?= $$($(2)_$(3)_DST)/lib
$(2)_$(3)_INCDIR ?= $$($(2)_$(3)_DST)/include
$$(OBJ)/.$(1)-configure$(3): $$(shell mkdir -p $$($(2)_OBJ$(3)))
$$(OBJ)/.$(1)-configure$(3): CCACHE_BASEDIR = $$($(2)_SRC)
$$(OBJ)/.$(1)-configure$(3): $$(patsubst %,%-build$(3),$$($(2)_DEPENDS) $$($(2)_DEPENDS$(3)))
$$(OBJ)/.$(1)-configure$(3): | $$(OBJ)/.$(1)-post-source
$$(OBJ)/.$(1)-$(3)-configure: $$(shell mkdir -p $$($(2)_$(3)_OBJ))
$$(OBJ)/.$(1)-$(3)-configure: CCACHE_BASEDIR = $$($(2)_SRC)
$$(OBJ)/.$(1)-$(3)-configure: $$(patsubst %,%-$(3)-build,$$($(2)_DEPENDS) $$($(2)_$(3)_DEPENDS))
$$(OBJ)/.$(1)-$(3)-configure: | $$(OBJ)/.$(1)-post-source
$(1)-configure$(3): $$(OBJ)/.$(1)-configure$(3)
.INTERMEDIATE: $(1)-configure$(3)
$(1)-$(3)-configure: $$(OBJ)/.$(1)-$(3)-configure
.INTERMEDIATE: $(1)-$(3)-configure
all-configure$(3) $(1)-configure: $(1)-configure$(3)
.PHONY: all-configure$(3) $(1)-configure
all-$(3)-configure $(1)-configure: $(1)-$(3)-configure
.PHONY: all-$(3)-configure $(1)-configure
all-configure: $(1)-configure
.PHONY: all-configure
$$(OBJ)/.$(1)-build$(3): CCACHE_BASEDIR = $$($(2)_SRC)
$$(OBJ)/.$(1)-build$(3): $$(OBJ)/.$(1)-source
$$(OBJ)/.$(1)-build$(3): $$(OBJ)/.$(1)-configure$(3)
$$(OBJ)/.$(1)-$(3)-build: CCACHE_BASEDIR = $$($(2)_SRC)
$$(OBJ)/.$(1)-$(3)-build: $$(OBJ)/.$(1)-source
$$(OBJ)/.$(1)-$(3)-build: $$(OBJ)/.$(1)-$(3)-configure
$$(OBJ)/.$(1)-post-build$(3): $$(OBJ)/.$(1)-build$(3)
$$(OBJ)/.$(1)-$(3)-post-build: $$(OBJ)/.$(1)-$(3)-build
$(1)-build$(3): $$(OBJ)/.$(1)-build$(3)
.INTERMEDIATE: $(1)-build$(3)
$(1)-$(3)-build: $$(OBJ)/.$(1)-$(3)-build
.INTERMEDIATE: $(1)-$(3)-build
all-build$(3) $(1)-build: $(1)-build$(3)
.PHONY: all-build$(3) $(1)-build
all-$(3)-build $(1)-build: $(1)-$(3)-build
.PHONY: all-$(3)-build $(1)-build
all-build: $(1)-build
.PHONY: all-build
$$(OBJ)/.$(1)-dist$(3): $$(OBJ)/.$(1)-build$(3)
$$(OBJ)/.$(1)-dist$(3): $$(OBJ)/.$(1)-post-build$(3)
$$(OBJ)/.$(1)-$(3)-dist: $$(OBJ)/.$(1)-$(3)-build
$$(OBJ)/.$(1)-$(3)-dist: $$(OBJ)/.$(1)-$(3)-post-build
$(2)_SOURCE_DATE_EPOCH$(3) ?= $$(BASE_SOURCE_DATE_EPOCH$(3))
$(2)_$(3)_SOURCE_DATE_EPOCH ?= $$($(3)_SOURCE_DATE_EPOCH)
$$(OBJ)/.$(1)-dist$(3):
@echo ":: installing $(3)bit $(1)..." >&2
if [ -f "$$($(2)_OBJ$(3))/compile_commands.json" ]; then \
mkdir -p "$$(OBJ)/compile_commands/$(1)$(3)/"; \
sed "s#$$($(2)_SRC)#$$($(2)_ORIGIN)#g" "$$($(2)_OBJ$(3))/compile_commands.json" > "$$(OBJ)/compile_commands/$(1)$(3)/compile_commands.json"; \
$$(OBJ)/.$(1)-$(3)-dist:
@echo ":: installing $(1)-$(3)..." >&2
if [ -f "$$($(2)_$(3)_OBJ)/compile_commands.json" ]; then \
mkdir -p "$$(OBJ)/compile_commands/$(1)-$(3)/"; \
sed "s#$$($(2)_SRC)#$$($(2)_ORIGIN)#g" "$$($(2)_$(3)_OBJ)/compile_commands.json" > "$$(OBJ)/compile_commands/$(1)-$(3)/compile_commands.json"; \
fi
mkdir -p $$($(2)_LIBDIR$(3))/ $$(DST_LIBDIR)/
cd $$($(2)_LIBDIR$(3)) && find -type f -printf '$$(DST_LIBDIR)/%h\0' | sort -z | uniq -z | xargs $(--verbose?) -0 -r -P$$(J) mkdir -p
cd $$($(2)_LIBDIR$(3)) && find -type l -printf '%p\0$$(DST_LIBDIR)/%p\0' | xargs $(--verbose?) -0 -r -P$$(J) -n2 cp -a
mkdir -p $$($(2)_$(3)_LIBDIR)/ $$(DST_LIBDIR)/
cd $$($(2)_$(3)_LIBDIR) && find -type f -printf '$$(DST_LIBDIR)/%h\0' | sort -z | uniq -z | xargs $(--verbose?) -0 -r -P$$(J) mkdir -p
cd $$($(2)_$(3)_LIBDIR) && find -type l -printf '%p\0$$(DST_LIBDIR)/%p\0' | xargs $(--verbose?) -0 -r -P$$(J) -n2 cp -a
ifneq ($(UNSTRIPPED_BUILD),)
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
cd $$($(2)_$(3)_LIBDIR) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
-printf '--only-keep-debug\0%p\0$$(DST_LIBDIR)/%p.debug\0' | \
xargs $(--verbose?) -0 -r -P$$(J) -n3 objcopy $(OBJCOPY_FLAGS)
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
cd $$($(2)_$(3)_LIBDIR) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
-printf '--add-gnu-debuglink=$$(DST_LIBDIR)/%p.debug\0--strip-debug\0%p\0$$(DST_LIBDIR)/%p\0' | \
xargs $(--verbose?) -0 -r -P$$(J) -n4 objcopy $(OBJCOPY_FLAGS) --set-section-flags .text=contents,alloc,load,readonly,code
touch $$@
else
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
cd $$($(2)_$(3)_LIBDIR) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
-printf '$$(DST_LIBDIR)/%p.debug\0' | xargs $(--verbose?) -0 -r -P$$(J) rm -f
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
cd $$($(2)_$(3)_LIBDIR) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.la' -or -iname '*.def' -or -iname '*.h' ')' \
-printf '--strip-debug\0%p\0$$(DST_LIBDIR)/%p\0' | \
xargs $(--verbose?) -0 -r -P$$(J) -n3 objcopy $(OBJCOPY_FLAGS) --set-section-flags .text=contents,alloc,load,readonly,code
touch $$@
endif
$(1)-dist$(3): $$(OBJ)/.$(1)-dist$(3)
.INTERMEDIATE: $(1)-dist$(3)
$(1)-$(3)-dist: $$(OBJ)/.$(1)-$(3)-dist
.INTERMEDIATE: $(1)-$(3)-dist
all-dist$(3) $(1)-dist: $(1)-dist$(3)
.PHONY: all-dist$(3) $(1)-dist
all-$(3)-dist $(1)-dist: $(1)-$(3)-dist
.PHONY: all-$(3)-dist $(1)-dist
all-dist: $(1)-dist
.PHONY: all-dist
$(1)$(3): $(1)-configure$(3) $(1)-build$(3) $(1)-dist$(3)
.INTERMEDIATE: $(1)$(3)
$(1)-$(3): $(1)-$(3)-configure $(1)-$(3)-build $(1)-$(3)-dist
.INTERMEDIATE: $(1)-$(3)
all$(3) $(1): $(1)$(3)
.PHONY: all$(3) $(1)
all-$(3) $(1): $(1)-$(3)
.PHONY: all-$(3) $(1)
all: $(1)
.PHONY: all
$(2)_INCFLAGS$(3) = $$(foreach d,$$($(2)_DEPS$(3)),-I$$($$(d)_INCDIR$(3)))
$(2)_LIBFLAGS$(3) = $$(foreach d,$$($(2)_DEPS$(3)),-L$$($$(d)_LIBDIR$(3))/$$(LIBDIR_$(4)$(3))) \
$$(foreach d,$$($(2)_DEPS$(3)),-Wl,-rpath-link=$$($$(d)_LIBDIR$(3))/$$(LIBDIR_$(4)$(3))) \
$(2)_$(3)_INCFLAGS = $$(foreach d,$$($(2)_$(3)_DEPS),-I$$($$(d)_$(3)_INCDIR))
$(2)_$(3)_LIBFLAGS = $$(foreach d,$$($(2)_$(3)_DEPS),-L$$($$(d)_$(3)_LIBDIR)/$$($(4)$(3)_LIBDIR)) \
$$(foreach d,$$($(2)_$(3)_DEPS),-Wl,-rpath-link=$$($$(d)_$(3)_LIBDIR)/$$($(4)$(3)_LIBDIR)) \
# PKG_CONFIG is intentionally never using CROSS target, as it's missing
# wrapper scripts in the toolchain, we use PKG_CONFIG_LIBDIR directly
@ -105,27 +105,27 @@ $(2)_LIBFLAGS$(3) = $$(foreach d,$$($(2)_DEPS$(3)),-L$$($$(d)_LIBDIR$(3))/$$(LIB
# native version doesn't exist.
$(2)_ENV$(3) = \
CARGO_TARGET_$$(call toupper,$$(CARGO_TARGET_$(3)))_LINKER="$$(TARGET_$(4)$(3))-gcc" \
$(2)_$(3)_ENV = \
CARGO_TARGET_$$(call toupper,$$($(3)_CARGO_TARGET))_LINKER="$$($(4)$(3)_TARGET)-gcc" \
CCACHE_BASEDIR="$$(CCACHE_BASEDIR)" \
STRIP="$$(STRIP)" \
AR="$$(TARGET_$(4)$(3))-ar" \
RANLIB="$$(TARGET_$(4)$(3))-ranlib" \
CC="$$(TARGET_$(4)$(3))-gcc" \
CXX="$$(TARGET_$(4)$(3))-g++" \
LD="$$(TARGET_$(4)$(3))-ld" \
RC="$$(TARGET_CROSS$(3))-windres" \
WIDL="$$(TARGET_CROSS$(3))-widl" \
PKG_CONFIG="$$(TARGET_$(3))-pkg-config" \
PATH="$$(call list-join,:,$$(foreach d,$$($(2)_DEPS$(3)),$$($$(d)_BINDIR$(3))),,:):$$$$PATH" \
LD_LIBRARY_PATH="$$(call list-join,:,$$(foreach d,$$($(2)_DEPS$(3)),$$($$(d)_LIBDIR$(3))/$$(LIBDIR_$(4)$(3))),,:)$$$$LD_LIBRARY_PATH" \
PKG_CONFIG_PATH="$$(call list-join,:,$$(foreach d,$$($(2)_DEPS$(3)),$$($$(d)_LIBDIR$(3))/$$(LIBDIR_$(4)$(3))/pkgconfig))" \
PKG_CONFIG_LIBDIR="/usr/lib/$$(LIBDIR_$(4)$(3))/pkgconfig:/usr/share/pkgconfig" \
CFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CPPFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CXXFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)) -std=c++17" \
LDFLAGS="$$($(2)_LIBFLAGS$(3)) $$($(2)_LDFLAGS$(3)) $$($(2)_LDFLAGS) $$($(4)LDFLAGS)" \
SOURCE_DATE_EPOCH="$$($(2)_SOURCE_DATE_EPOCH$(3))" \
AR="$$($(4)$(3)_TARGET)-ar" \
RANLIB="$$($(4)$(3)_TARGET)-ranlib" \
CC="$$($(4)$(3)_TARGET)-gcc" \
CXX="$$($(4)$(3)_TARGET)-g++" \
LD="$$($(4)$(3)_TARGET)-ld" \
RC="$$(CROSS$(3)_TARGET)-windres" \
WIDL="$$(CROSS$(3)_TARGET)-widl" \
PKG_CONFIG="$$($(3)_TARGET)-pkg-config" \
PATH="$$(call list-join,:,$$(foreach d,$$($(2)_$(3)_DEPS),$$($$(d)_$(3)_BINDIR)),,:):$$$$PATH" \
LD_LIBRARY_PATH="$$(call list-join,:,$$(foreach d,$$($(2)_$(3)_DEPS),$$($$(d)_$(3)_LIBDIR)/$$($(4)$(3)_LIBDIR)),,:)$$$$LD_LIBRARY_PATH" \
PKG_CONFIG_PATH="$$(call list-join,:,$$(foreach d,$$($(2)_$(3)_DEPS),$$($$(d)_$(3)_LIBDIR)/$$($(4)$(3)_LIBDIR)/pkgconfig))" \
PKG_CONFIG_LIBDIR="/usr/lib/$$($(4)$(3)_LIBDIR)/pkgconfig:/usr/share/pkgconfig" \
CFLAGS="$$($(2)_$(3)_INCFLAGS) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS)" \
CPPFLAGS="$$($(2)_$(3)_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS)" \
CXXFLAGS="$$($(2)_$(3)_INCFLAGS) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS) -std=c++17" \
LDFLAGS="$$($(2)_$(3)_LIBFLAGS) $$($(2)_$(3)_LDFLAGS) $$($(2)_LDFLAGS) $$($(4)LDFLAGS)" \
SOURCE_DATE_EPOCH="$$($(2)_$(3)_SOURCE_DATE_EPOCH)" \
ifneq ($(4),CROSS)
@ -135,17 +135,17 @@ ifneq ($(4),CROSS)
# This is for instance used by Wine, but also Meson, as it requires the
# environment variable to ones for native.
$(2)_ENV$(3) += \
CROSSAR="$$(TARGET_CROSS$(3))-ar" \
CROSSRANLIB="$$(TARGET_CROSS$(3))-ranlib" \
CROSSCC="$$(TARGET_CROSS$(3))-gcc" \
CROSSCXX="$$(TARGET_CROSS$(3))-g++" \
CROSSLD="$$(TARGET_CROSS$(3))-ld" \
CROSSCFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CROSSCPPFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CROSSCXXFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)) -std=c++17" \
CROSSLDFLAGS="$$($(2)_LIBFLAGS$(3)) $$($(2)_LDFLAGS$(3)) $$($(2)_LDFLAGS) $$(CROSSLDFLAGS)" \
CROSSPKG_CONFIG_LIBDIR="/usr/lib/$$(LIBDIR_CROSS$(3))/pkgconfig:/usr/share/pkgconfig" \
$(2)_$(3)_ENV += \
CROSSAR="$$(CROSS$(3)_TARGET)-ar" \
CROSSRANLIB="$$(CROSS$(3)_TARGET)-ranlib" \
CROSSCC="$$(CROSS$(3)_TARGET)-gcc" \
CROSSCXX="$$(CROSS$(3)_TARGET)-g++" \
CROSSLD="$$(CROSS$(3)_TARGET)-ld" \
CROSSCFLAGS="$$($(2)_$(3)_INCFLAGS) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS)" \
CROSSCPPFLAGS="$$($(2)_$(3)_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS)" \
CROSSCXXFLAGS="$$($(2)_$(3)_INCFLAGS) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS) -std=c++17" \
CROSSLDFLAGS="$$($(2)_$(3)_LIBFLAGS) $$($(2)_$(3)_LDFLAGS) $$($(2)_LDFLAGS) $$(CROSSLDFLAGS)" \
CROSSPKG_CONFIG_LIBDIR="/usr/lib/$$(CROSS$(3)_LIBDIR)/pkgconfig:/usr/share/pkgconfig" \
endif
@ -158,24 +158,24 @@ else
install-strip = objcopy $(OBJCOPY_FLAGS) --strip-debug $(1) $(2)/$(notdir $(1)) && rm -f $(2)/$(notdir $(1)).debug
endif
TARGET_32 := i686-linux-gnu
TARGET_64 := x86_64-linux-gnu
TARGET_CROSS32 := i686-w64-mingw32
TARGET_CROSS64 := x86_64-w64-mingw32
32_TARGET := i686-linux-gnu
64_TARGET := x86_64-linux-gnu
CROSS32_TARGET := i686-w64-mingw32
CROSS64_TARGET := x86_64-w64-mingw32
LIBDIR_32 := i386-linux-gnu
LIBDIR_64 := x86_64-linux-gnu
LIBDIR_CROSS32 := i386-w64-mingw32
LIBDIR_CROSS64 := x86_64-w64-mingw32
32_LIBDIR := i386-linux-gnu
64_LIBDIR := x86_64-linux-gnu
CROSS32_LIBDIR := i386-w64-mingw32
CROSS64_LIBDIR := x86_64-w64-mingw32
LIBDIR_WINE_32 := wine/i386-unix
LIBDIR_WINE_64 := wine/x86_64-unix
LIBDIR_WINE_CROSS32 := wine/i386-windows
LIBDIR_WINE_CROSS64 := wine/x86_64-windows
32_WINEDIR := wine/i386-unix
64_WINEDIR := wine/x86_64-unix
CROSS32_WINEDIR := wine/i386-windows
CROSS64_WINEDIR := wine/x86_64-windows
$(OBJ)/.%-post-build32:
$(OBJ)/.%-32-post-build:
touch $@
$(OBJ)/.%-post-build64:
$(OBJ)/.%-64-post-build:
touch $@
rules-common = $(call create-rules-common,$(1),$(call toupper,$(1)),$(2),$(3))

View File

@ -7,31 +7,31 @@
define create-rules-configure
$(call create-rules-common,$(1),$(2),$(3),$(4))
$$(OBJ)/.$(1)-configure$(3):
@echo ":: configuring $(3)bit $(1)..." >&2
$$(OBJ)/.$(1)-$(3)-configure:
@echo ":: configuring $(1)-$(3)..." >&2
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$($(2)_SRC)/configure $(--quiet?) \
--cross-prefix=$$(TARGET_$(3))- \
--cross-prefix=$$($(3)_TARGET)- \
--target-os=linux \
--prefix="$$($(2)_DST$(3))" \
--libdir="$$($(2)_LIBDIR$(3))/$$(LIBDIR_$(4)$(3))" \
$$(CONFIGURE_ARGS_$(3)) \
--prefix="$$($(2)_$(3)_DST)" \
--libdir="$$($(2)_$(3)_LIBDIR)/$$($(4)$(3)_LIBDIR)" \
$$($(3)_CONFIGURE_ARGS) \
$$($(2)_CONFIGURE_ARGS) \
$$($(2)_CONFIGURE_ARGS$(3)) \
$$($(2)_$(3)_CONFIGURE_ARGS)
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
+cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
+cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(BEAR) $$(MAKE)
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(MAKE) install
touch $$@
endef
CONFIGURE_ARGS_32 := --arch=x86
CONFIGURE_ARGS_64 := --arch=x86_64
32_CONFIGURE_ARGS := --arch=x86
64_CONFIGURE_ARGS := --arch=x86_64
rules-configure = $(call create-rules-configure,$(1),$(call toupper,$(1)),$(2),$(3))

View File

@ -6,47 +6,47 @@
define create-rules-makedep
$(call create-rules-common,$(1),$(2),$(3)) # cannot pass $(4)/CROSS here because of link flags for remaining .dll.so modules
$$(OBJ)/.$(1)-configure$(3):
@echo ":: configuring $(3)bit $(1)..." >&2
$$(OBJ)/.$(1)-$(3)-configure:
@echo ":: configuring $(1)-$(3)..." >&2
sed -e '/^all:$$$$/,$$$$c all:' \
-e '/^SUBDIRS/,/[^\\]$$$$/c SUBDIRS = $$($(2)_SRC)' \
\
-e '/^srcdir/a objdir = $$(WINE_OBJ$(3))' \
-e '/^prefix/c prefix = $$($(2)_DST$(3))' \
-e '/^libdir/c libdir = $$($(2)_LIBDIR$(3))' \
-e '/^toolsdir/c toolsdir = $$(WINE_OBJ$(3))' \
-e '/^srcdir/a objdir = $$(WINE_$(3)_OBJ)' \
-e '/^prefix/c prefix = $$($(2)_$(3)_DST)' \
-e '/^libdir/c libdir = $$($(2)_$(3)_LIBDIR)' \
-e '/^toolsdir/c toolsdir = $$(WINE_$(3)_OBJ)' \
\
-e '/^CFLAGS/c CFLAGS = $$($(2)_INCFLAGS$(3)) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))' \
-e '/^CPPFLAGS/c CPPFLAGS = $$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))' \
-e '/^CXXFLAGS/c CXXFLAGS = $$($(2)_INCFLAGS$(3)) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)) -std=c++17' \
-e '/^LDFLAGS/c LDFLAGS = $$($(2)_LIBFLAGS$(3)) $$($(2)_LDFLAGS$(3)) $$($(2)_LDFLAGS)' \
-e '/^CFLAGS/c CFLAGS = $$($(2)_$(3)_INCFLAGS) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS)' \
-e '/^CPPFLAGS/c CPPFLAGS = $$($(2)_$(3)_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS)' \
-e '/^CXXFLAGS/c CXXFLAGS = $$($(2)_$(3)_INCFLAGS) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS) -std=c++17' \
-e '/^LDFLAGS/c LDFLAGS = $$($(2)_$(3)_LIBFLAGS) $$($(2)_$(3)_LDFLAGS) $$($(2)_LDFLAGS)' \
\
-e '/^x86_64_CC/a x86_64_CXX = $$(TARGET_CROSS64)-g++' \
-e '/^x86_64_CFLAGS/c x86_64_CFLAGS = $$($(2)_INCFLAGS64) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS64)' \
-e '/^x86_64_CPPFLAGS/c x86_64_CPPFLAGS = $$($(2)_INCFLAGS64) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS64)' \
-e '/^x86_64_CXXFLAGS/c x86_64_CXXFLAGS = $$($(2)_INCFLAGS64) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS64) -std=c++17' \
-e '/^x86_64_LDFLAGS/c x86_64_LDFLAGS = $$($(2)_LIBFLAGS64) $$($(2)_LDFLAGS64) $$(CROSSLDFLAGS)' \
-e '/^x86_64_CC/a x86_64_CXX = $$(CROSS64_TARGET)-g++' \
-e '/^x86_64_CFLAGS/c x86_64_CFLAGS = $$($(2)_64_INCFLAGS) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(64_COMMON_FLAGS)' \
-e '/^x86_64_CPPFLAGS/c x86_64_CPPFLAGS = $$($(2)_64_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(64_COMMON_FLAGS)' \
-e '/^x86_64_CXXFLAGS/c x86_64_CXXFLAGS = $$($(2)_64_INCFLAGS) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(64_COMMON_FLAGS) -std=c++17' \
-e '/^x86_64_LDFLAGS/c x86_64_LDFLAGS = $$($(2)_64_LIBFLAGS) $$($(2)_64_LDFLAGS) $$(CROSSLDFLAGS)' \
\
-e '/^i386_CC/a i386_CXX = $$(TARGET_CROSS32)-g++' \
-e '/^i386_CFLAGS/c i386_CFLAGS = $$($(2)_INCFLAGS32) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS32)' \
-e '/^i386_CPPFLAGS/c i386_CPPFLAGS = $$($(2)_INCFLAGS32) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS32)' \
-e '/^i386_CXXFLAGS/c i386_CXXFLAGS = $$($(2)_INCFLAGS32) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS32) -std=c++17' \
-e '/^i386_LDFLAGS/c i386_LDFLAGS = $$($(2)_LIBFLAGS32) $$($(2)_LDFLAGS32) $$(CROSSLDFLAGS)' \
-e '/^i386_CC/a i386_CXX = $$(CROSS32_TARGET)-g++' \
-e '/^i386_CFLAGS/c i386_CFLAGS = $$($(2)_32_INCFLAGS) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(32_COMMON_FLAGS)' \
-e '/^i386_CPPFLAGS/c i386_CPPFLAGS = $$($(2)_32_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(32_COMMON_FLAGS)' \
-e '/^i386_CXXFLAGS/c i386_CXXFLAGS = $$($(2)_32_INCFLAGS) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(32_COMMON_FLAGS) -std=c++17' \
-e '/^i386_LDFLAGS/c i386_LDFLAGS = $$($(2)_32_LIBFLAGS) $$($(2)_32_LDFLAGS) $$(CROSSLDFLAGS)' \
\
-e 's@UNIXLDFLAGS =@UNIXLDFLAGS = -L$$(WINE_LIBDIR$(3))/$$(LIBDIR_WINE_$(3)) -l:ntdll.so@' \
$$(WINE_OBJ$(3))/Makefile > $$($(2)_OBJ$(3))/Makefile
-e 's@UNIXLDFLAGS =@UNIXLDFLAGS = -L$$(WINE_$(3)_LIBDIR)/$$($(3)_WINEDIR) -l:ntdll.so@' \
$$(WINE_$(3)_OBJ)/Makefile > $$($(2)_$(3)_OBJ)/Makefile
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$(WINE_OBJ$(3))/tools/makedep
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(WINE_$(3)_OBJ)/tools/makedep
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
+cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
+cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(BEAR) $$(MAKE)
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
$$(MAKE) install
touch $$@
endef

View File

@ -9,7 +9,7 @@ define create-rules-meson
# cross compilation below with the CROSS-prefixed variables.
$(call create-rules-common,$(1),$(2),$(3))
define $(2)_MESON_CROSS$(3)
define $(2)_$(3)_MESON_CROSS
cat <<EOF
[binaries]
ar = '$$$$CROSSAR'
@ -23,50 +23,50 @@ 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))]
c_args = [$$(call list-quote,$$($(2)_$(3)_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS))]
cpp_args = [$$(call list-quote,$$($(2)_$(3)_INCFLAGS) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$($(3)_COMMON_FLAGS) -std=c++17)]
link_args = [$$(call list-quote,$$($(2)_$(3)_LIBFLAGS) $$($(2)_$(3)_LDFLAGS) $$($(2)_LDFLAGS) $$(CROSSLDFLAGS))]
pkg_config_libdir = '$$$$CROSSPKG_CONFIG_LIBDIR'
[host_machine]
system = 'windows'
cpu_family = '$$(MESON_CPU$(3))'
cpu = '$$(MESON_CPU$(3))'
cpu_family = '$$($(3)_MESON_CPU)'
cpu = '$$($(3)_MESON_CPU)'
endian = 'little'
EOF
endef
export $(2)_MESON_CROSS$(3)
export $(2)_$(3)_MESON_CROSS
$$($(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"
$$(OBJ)/.$(1)-$(3)-configure: $$($(2)_SRC)/meson.build
@echo ":: configuring $(1)-$(3)..." >&2
rm -rf "$$($(2)_$(3)_OBJ)/meson-private/coredata.dat"
echo "$$$$$(2)_MESON_CROSS$(3)" | env $$($(2)_ENV$(3)) sh >"$$($(2)_OBJ$(3))/cross-$(3).txt"
echo "$$$$$(2)_$(3)_MESON_CROSS" | env $$($(2)_$(3)_ENV) sh >"$$($(2)_$(3)_OBJ)/$(3)-cross.txt"
env $$($(2)_ENV$(3)) \
meson "$$($(2)_OBJ$(3))" "$$($(2)_SRC)" \
--prefix="$$($(2)_DST$(3))" \
--libdir="lib/$$(LIBDIR_$(4)$(3))" \
env $$($(2)_$(3)_ENV) \
meson "$$($(2)_$(3)_OBJ)" "$$($(2)_SRC)" \
--prefix="$$($(2)_$(3)_DST)" \
--libdir="lib/$$($(4)$(3)_LIBDIR)" \
--buildtype=plain \
$(if $(4),--cross-file="$$($(2)_OBJ$(3))/cross-$(3).txt",) \
$$(MESON_ARGS_$(3)) \
$(if $(4),--cross-file="$$($(2)_$(3)_OBJ)/$(3)-cross.txt",) \
$$($(3)_MESON_ARGS) \
$$($(2)_MESON_ARGS) \
$$($(2)_MESON_ARGS$(3)) \
$$($(2)_$(3)_MESON_ARGS) \
$$(MESON_STRIP_ARG)
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
+env $$($(2)_ENV$(3)) \
ninja -C "$$($(2)_OBJ$(3))" install
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
+env $$($(2)_$(3)_ENV) \
ninja -C "$$($(2)_$(3)_OBJ)" install
touch $$@
endef
MESON_CPU32 = x86
MESON_CPU64 = x86_64
32_MESON_CPU = x86
64_MESON_CPU = x86_64
rules-meson = $(call create-rules-meson,$(1),$(call toupper,$(1)),$(2),$(3))

View File

@ -13,13 +13,13 @@ $$($(2)_SRC)/server/request_trace.h: | $$(OBJ)/.$(1)-post-source
$$($(2)_SRC)/server/request_trace.h: $$($(2)_ORIGIN)/server/request_trace.h
cp -a $$< $$@
$$(OBJ)/.$(1)-configure32: $$($(2)_SRC)/include/wine/server_protocol.h
$$(OBJ)/.$(1)-configure32: $$($(2)_SRC)/server/request_handlers.h
$$(OBJ)/.$(1)-configure32: $$($(2)_SRC)/server/request_trace.h
$$(OBJ)/.$(1)-32-configure: $$($(2)_SRC)/include/wine/server_protocol.h
$$(OBJ)/.$(1)-32-configure: $$($(2)_SRC)/server/request_handlers.h
$$(OBJ)/.$(1)-32-configure: $$($(2)_SRC)/server/request_trace.h
$$(OBJ)/.$(1)-configure64: $$($(2)_SRC)/include/wine/server_protocol.h
$$(OBJ)/.$(1)-configure64: $$($(2)_SRC)/server/request_handlers.h
$$(OBJ)/.$(1)-configure64: $$($(2)_SRC)/server/request_trace.h
$$(OBJ)/.$(1)-64-configure: $$($(2)_SRC)/include/wine/server_protocol.h
$$(OBJ)/.$(1)-64-configure: $$($(2)_SRC)/server/request_handlers.h
$$(OBJ)/.$(1)-64-configure: $$($(2)_SRC)/server/request_trace.h
$$(OBJ)/.$(1)-wine-requests: $$($(2)_SRC)/include/wine/server_protocol.h
$$(OBJ)/.$(1)-wine-requests: $$($(2)_SRC)/server/request_handlers.h
@ -31,8 +31,8 @@ $$(OBJ)/.$(1)-wine-requests: | $$(OBJ)/.$(1)-post-source
cd "$$($(2)_SRC)" && tools/make_requests
touch $$@
$$(OBJ)/.$(1)-build32: $$(OBJ)/.$(1)-wine-requests
$$(OBJ)/.$(1)-build64: $$(OBJ)/.$(1)-wine-requests
$$(OBJ)/.$(1)-32-build: $$(OBJ)/.$(1)-wine-requests
$$(OBJ)/.$(1)-64-build: $$(OBJ)/.$(1)-wine-requests
endef
rules-wine-requests = $(call create-rules-wine-requests,$(1),$(call toupper,$(1)))

View File

@ -6,39 +6,39 @@
#
define create-rules-winemaker
$(call create-rules-common,$(1),$(2),$(3))
$(2)_OBJ$(3) := $$($(2)_OBJ$(3))/$(4)
$(2)_$(3)_OBJ := $$($(2)_$(3)_OBJ)/$(4)
$$(OBJ)/.$(1)-configure$(3):
@echo ":: configuring $(3)bit $(1)..." >&2
rsync -arx "$$($(2)_SRC)/" "$$($(2)_OBJ$(3))/"
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-configure:
@echo ":: configuring $(1)-$(3)..." >&2
rsync -arx "$$($(2)_SRC)/" "$$($(2)_$(3)_OBJ)/"
cd "$$($(2)_$(3)_OBJ)" && env $$($(2)_$(3)_ENV) \
winemaker --nosource-fix --nolower-include --nodlls --nomsvcrt \
"-I$$(WINE_SRC)/include" \
"-I$$(WINE_SRC)/include/wine" \
"-I$$(WINE_DST$(3))/include/wine" \
"-I$$(WINE_$(3)_DST)/include/wine" \
$(patsubst %.dll,--dll,$(patsubst %.exe,--guiexe,$(4))) \
$$(WINEMAKER_ARGS_$(3)) \
$$($(3)_WINEMAKER_ARGS) \
$$($(2)_WINEMAKER_ARGS) \
$$($(2)_WINEMAKER_ARGS$(3)) \
$$($(2)_$(3)_WINEMAKER_ARGS) \
.
sed -re 's@_LDFLAGS=@_LDFLAGS= $$$$(LDFLAGS) @' -i "$$($(2)_OBJ$(3))/Makefile"
sed -re 's@_LDFLAGS=@_LDFLAGS= $$$$(LDFLAGS) @' -i "$$($(2)_$(3)_OBJ)/Makefile"
touch $$@
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
rsync -arx "$$($(2)_SRC)/" "$$($(2)_OBJ$(3))/"
env $$($(2)_ENV$(3)) \
$$(MAKE) -C "$$($(2)_OBJ$(3))" LIBRARIES="$$($(2)_LDFLAGS)"
cd "$$($(2)_OBJ$(3))" && touch "$(basename $(4)).spec" && env $$($(2)_ENV$(3)) \
$$(OBJ)/.$(1)-$(3)-build:
@echo ":: building $(1)-$(3)..." >&2
rsync -arx "$$($(2)_SRC)/" "$$($(2)_$(3)_OBJ)/"
env $$($(2)_$(3)_ENV) \
$$(MAKE) -C "$$($(2)_$(3)_OBJ)" LIBRARIES="$$($(2)_LDFLAGS)"
cd "$$($(2)_$(3)_OBJ)" && touch "$(basename $(4)).spec" && env $$($(2)_$(3)_ENV) \
winebuild --$(lastword $(subst ., ,$(4))) --fake-module -E "$(basename $(4)).spec" -o "$(4).fake"
mkdir -p $$($(2)_LIBDIR$(3))/$(LIBDIR_WINE_$(3))
cp -a $$($(2)_OBJ$(3))/$(4).so $$($(2)_LIBDIR$(3))/$(LIBDIR_WINE_$(3))/
mkdir -p $$($(2)_LIBDIR$(3))/$(LIBDIR_WINE_CROSS$(3))
cp -a $$($(2)_OBJ$(3))/$(4).fake $$($(2)_LIBDIR$(3))/$(LIBDIR_WINE_CROSS$(3))/$(4)
mkdir -p $$($(2)_$(3)_LIBDIR)/$($(3)_WINEDIR)
cp -a $$($(2)_$(3)_OBJ)/$(4).so $$($(2)_$(3)_LIBDIR)/$($(3)_WINEDIR)/
mkdir -p $$($(2)_$(3)_LIBDIR)/$(CROSS$(3)_WINEDIR)
cp -a $$($(2)_$(3)_OBJ)/$(4).fake $$($(2)_$(3)_LIBDIR)/$(CROSS$(3)_WINEDIR)/$(4)
touch $$@
endef
WINEMAKER_ARGS_32 := --wine32
WINEMAKER_ARGS_64 :=
32_WINEMAKER_ARGS := --wine32
64_WINEMAKER_ARGS :=
rules-winemaker = $(call create-rules-winemaker,$(1),$(call toupper,$(1)),$(2),$(3))