configure: Use a single steam runtime image.

* Make it more flexible on the image name,

* Remove the image type support, only Docker is likely to be supported.

* Add target runtime name (scout / soldier), independent of the image.
This commit is contained in:
Rémi Bernon 2020-09-22 09:11:01 +02:00 committed by Andrew Eikum
parent dcf5f0f53c
commit f417b5c3e3
4 changed files with 92 additions and 148 deletions

View file

@ -41,7 +41,7 @@ ifneq ($(unstripped),)
endif
CONFIGURE_CMD := ../proton/configure.sh \
--steam-runtime64=docker:steam-proton-dev --steam-runtime32=docker:steam-proton-dev \
--steam-runtime-image=steam-proton-dev \
--build-name="$(_build_name)"
# make doesn't handle spaces well... replace them with underscores in paths

View file

@ -178,7 +178,7 @@ course use whatever paths you like.
mkdir build/
cd build
../proton/configure.sh --steam-runtime64=docker:steam-proton-dev --steam-runtime32=docker:steam-proton-dev
../proton/configure.sh --steam-runtime-image=steam-proton-dev
If you are building without the Steam runtime, then instead use:

View file

@ -25,10 +25,8 @@ else # (Rest of the file is the else)
# We expect the configure script to conditionally set the following:
# SRCDIR - Path to source
# BUILD_NAME - Name of the build for manifests etc.
# STEAMRT64_MODE - 'docker' or '' for automatic Steam Runtime container
# STEAMRT64_IMAGE - Name of the image if mode is set
# STEAMRT32_MODE - Same as above for 32-bit container (can be different type)
# STEAMRT32_IMAGE - Same as above for 32-bit container
# STEAMRT_IMAGE - Name of the docker image to use for building
# STEAMRT_NAME - Name of the steam runtime to build against (scout / soldier)
ifeq ($(SRCDIR),)
foo := $(error SRCDIR not set, do not include makefile_base directly, run ./configure.sh to generate Makefile)
@ -79,56 +77,29 @@ DOCKER_BASE = docker run --rm --init --privileged --cap-add=SYS_ADMIN --security
-v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro -v /etc/shadow:/etc/shadow:ro \
-w $(CURDIR) -e HOME=$(HOME) -e PATH=$(PATH) $(DOCKER_CCACHE_FLAG) -u $(shell id -u):$(shell id -g) -h $(shell hostname) \
$(DOCKER_OPTS) \
$(SELECT_DOCKER_IMAGE) /sbin/docker-init -sg --
$(STEAMRT_IMAGE) /sbin/docker-init -sg --
STEAM_RUNTIME_RUNSH :=
TOOLMANIFEST_VDF_SRC := toolmanifest_noruntime.vdf
# If STEAMRT64_MODE/STEAMRT32_MODE is set, set the nested SELECT_DOCKER_IMAGE to the _IMAGE variable and eval
# DOCKER_BASE with it to create the CONTAINER_SHELL setting.
ifeq ($(STEAMRT64_MODE),docker)
SELECT_DOCKER_IMAGE := $(STEAMRT64_IMAGE)
CONTAINER_SHELL64 := $(DOCKER_BASE) /bin/bash
STEAM_RUNTIME_RUNSH := $(DOCKER_BASE)
STEAMRT_NAME ?= soldier
ifeq ($(STEAMRT_NAME),soldier)
TOOLMANIFEST_VDF_SRC := toolmanifest_runtime.vdf
else ifneq ($(STEAMRT64_MODE),)
foo := $(error Unrecognized STEAMRT64_MODE $(STEAMRT64_MODE))
endif
ifeq ($(STEAMRT32_MODE),docker)
SELECT_DOCKER_IMAGE := $(STEAMRT32_IMAGE)
CONTAINER_SHELL32 := $(DOCKER_BASE) /bin/bash
else ifneq ($(STEAMRT32_MODE),)
foo := $(error Unrecognized STEAMRT32_MODE $(STEAMRT32_MODE))
else
TOOLMANIFEST_VDF_SRC := toolmanifest_noruntime.vdf
endif
SELECT_DOCKER_IMAGE :=
# If we're using containers to sub-invoke the various builds, jobserver won't work, have some silly auto-jobs
# controllable by SUBMAKE_JOBS. Not ideal.
ifneq ($(CONTAINER_SHELL32)$(CONTAINER_SHELL64),)
ifneq ($(STEAMRT_IMAGE),)
SUBMAKE_JOBS ?= 36
MAKE := make -j$(SUBMAKE_JOBS)
CONTAINER_SHELL := $(DOCKER_BASE) /bin/bash
STEAM_RUNTIME_RUNSH := $(DOCKER_BASE)
else
CONTAINER_SHELL := $(SHELL)
STEAM_RUNTIME_RUNSH :=
endif
# Use default shell if no STEAMRT_ variables setup a container to invoke. Commands will just run natively.
ifndef CONTAINER_SHELL64
CONTAINER_SHELL64 := $(SHELL)
endif
ifndef CONTAINER_SHELL32
CONTAINER_SHELL32 := $(SHELL)
endif
# Helper to test
.PHONY: test-container test-container32 test-container64
test-container: test-container64 test-container32
test-container64:
@echo >&2 ":: Testing 64-bit container"
$(CONTAINER_SHELL64) -c "echo Hello World!"
test-container32:
@echo >&2 ":: Testing 32-bit container"
$(CONTAINER_SHELL32) -c "echo Hello World!"
.PHONY: test-container
test-container:
@echo >&2 ":: Testing container"
$(CONTAINER_SHELL) -c "echo Hello World!"
# Many of the configure steps below depend on the makefile itself, such that they are dirtied by changing the recipes
# that create them. This can be annoying when working on the makefile, building with NO_MAKEFILE_DEPENDENCY=1 disables
@ -502,11 +473,11 @@ redist: dist | $(filter-out dist deploy install redist,$(MAKECMDGOALS))
.PHONY: module32 module64 module
module32: SHELL = $(CONTAINER_SHELL32)
module32: SHELL = $(CONTAINER_SHELL)
module32:
+$(MAKE) -C $(WINE_OBJ32)/dlls/$(module)
module64: SHELL = $(CONTAINER_SHELL64)
module64: SHELL = $(CONTAINER_SHELL)
module64:
+$(MAKE) -C $(WINE_OBJ64)/dlls/$(module)
@ -536,7 +507,7 @@ GST_ORC_CONFIGURE_FILES32 := $(GST_ORC_OBJ32)/build.ninja
GST_ORC_CONFIGURE_FILES64 := $(GST_ORC_OBJ64)/build.ninja
# 64-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GST_ORC_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(GST_ORC_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(GST_ORC_CONFIGURE_FILES64): $(MAKEFILE_DEP) | $(GST_ORC_OBJ64)
if [ -e "$(abspath $(GST_ORC_OBJ64))"/build.ninja ]; then \
rm -f "$(abspath $(GST_ORC_OBJ64))"/meson-private/coredata.dat; \
@ -547,7 +518,7 @@ $(GST_ORC_CONFIGURE_FILES64): $(MAKEFILE_DEP) | $(GST_ORC_OBJ64)
meson --prefix="$(abspath $(TOOLS_DIR64))" --libdir="lib" $(GST_ORC_MESON_ARGS) $(MESON_STRIP_ARG) "$(abspath $(GST_ORC_OBJ64))"
# 32-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GST_ORC_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(GST_ORC_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(GST_ORC_CONFIGURE_FILES32): $(MAKEFILE_DEP) | $(GST_ORC_OBJ32)
if [ -e "$(abspath $(GST_ORC_OBJ32))"/build.ninja ]; then \
rm -f "$(abspath $(GST_ORC_OBJ32))"/meson-private/coredata.dat; \
@ -576,14 +547,14 @@ gst_orc_configure32: $(GST_ORC_CONFIGURE_FILES32)
gst_orc: gst_orc32 gst_orc64
gst_orc64: SHELL = $(CONTAINER_SHELL64)
gst_orc64: SHELL = $(CONTAINER_SHELL)
gst_orc64: $(GST_ORC_CONFIGURE_FILES64)
PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR64))/lib:$(LD_LIBRARY_PATH)" \
ninja -C "$(GST_ORC_OBJ64)" install
cp -a $(TOOLS_DIR64)/lib/liborc* $(DST_DIR)/lib64/
gst_orc32: SHELL = $(CONTAINER_SHELL32)
gst_orc32: SHELL = $(CONTAINER_SHELL)
gst_orc32: $(GST_ORC_CONFIGURE_FILES32)
PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR32))/lib:$(LD_LIBRARY_PATH)" \
@ -605,7 +576,7 @@ GSTREAMER_CONFIGURE_FILES32 := $(GSTREAMER_OBJ32)/build.ninja
GSTREAMER_CONFIGURE_FILES64 := $(GSTREAMER_OBJ64)/build.ninja
# 64-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GSTREAMER_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(GSTREAMER_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(GSTREAMER_CONFIGURE_FILES64): $(MAKEFILE_DEP) gst_orc64 | $(GSTREAMER_OBJ64)
if [ -e "$(abspath $(GSTREAMER_OBJ64))"/build.ninja ]; then \
rm -f "$(abspath $(GSTREAMER_OBJ64))"/meson-private/coredata.dat; \
@ -616,7 +587,7 @@ $(GSTREAMER_CONFIGURE_FILES64): $(MAKEFILE_DEP) gst_orc64 | $(GSTREAMER_OBJ64)
meson --prefix="$(abspath $(TOOLS_DIR64))" --libdir="lib" $(GSTREAMER_MESON_ARGS) $(MESON_STRIP_ARG) --buildtype=release "$(abspath $(GSTREAMER_OBJ64))"
# 32-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GSTREAMER_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(GSTREAMER_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(GSTREAMER_CONFIGURE_FILES32): $(MAKEFILE_DEP) gst_orc32 | $(GSTREAMER_OBJ32)
if [ -e "$(abspath $(GSTREAMER_OBJ32))"/build.ninja ]; then \
rm -f "$(abspath $(GSTREAMER_OBJ32))"/meson-private/coredata.dat; \
@ -645,7 +616,7 @@ gstreamer_configure32: $(GSTREAMER_CONFIGURE_FILES32)
gstreamer: gstreamer32 gstreamer64
gstreamer64: SHELL = $(CONTAINER_SHELL64)
gstreamer64: SHELL = $(CONTAINER_SHELL)
gstreamer64: $(GSTREAMER_CONFIGURE_FILES64)
PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR64))/lib:$(LD_LIBRARY_PATH)" \
@ -653,7 +624,7 @@ gstreamer64: $(GSTREAMER_CONFIGURE_FILES64)
cp -a $(TOOLS_DIR64)/lib/libgst* $(DST_DIR)/lib64/ && \
cp -a $(TOOLS_DIR64)/lib/gstreamer-1.0 $(DST_DIR)/lib64/
gstreamer32: SHELL = $(CONTAINER_SHELL32)
gstreamer32: SHELL = $(CONTAINER_SHELL)
gstreamer32: $(GSTREAMER_CONFIGURE_FILES32)
PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR32))/lib:$(LD_LIBRARY_PATH)" \
@ -697,7 +668,7 @@ GST_BASE_CONFIGURE_FILES32 := $(GST_BASE_OBJ32)/build.ninja
GST_BASE_CONFIGURE_FILES64 := $(GST_BASE_OBJ64)/build.ninja
# 64-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GST_BASE_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(GST_BASE_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(GST_BASE_CONFIGURE_FILES64): $(MAKEFILE_DEP) gstreamer64 | $(GST_BASE_OBJ64)
if [ -e "$(abspath $(GST_BASE_OBJ64))"/build.ninja ]; then \
rm -f "$(abspath $(GST_BASE_OBJ64))"/meson-private/coredata.dat; \
@ -708,7 +679,7 @@ $(GST_BASE_CONFIGURE_FILES64): $(MAKEFILE_DEP) gstreamer64 | $(GST_BASE_OBJ64)
meson --prefix="$(abspath $(TOOLS_DIR64))" --libdir="lib" $(GST_BASE_MESON_ARGS) $(MESON_STRIP_ARG) --buildtype=release "$(abspath $(GST_BASE_OBJ64))"
# 32-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GST_BASE_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(GST_BASE_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(GST_BASE_CONFIGURE_FILES32): $(MAKEFILE_DEP) gstreamer32 | $(GST_BASE_OBJ32)
if [ -e "$(abspath $(GST_BASE_OBJ32))"/build.ninja ]; then \
rm -f "$(abspath $(GST_BASE_OBJ32))"/meson-private/coredata.dat; \
@ -737,7 +708,7 @@ gst_base_configure32: $(GST_BASE_CONFIGURE_FILES32)
gst_base: gst_base32 gst_base64
gst_base64: SHELL = $(CONTAINER_SHELL64)
gst_base64: SHELL = $(CONTAINER_SHELL)
gst_base64: $(GST_BASE_CONFIGURE_FILES64)
PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR64))/lib:$(LD_LIBRARY_PATH)" \
@ -745,7 +716,7 @@ gst_base64: $(GST_BASE_CONFIGURE_FILES64)
cp -a $(TOOLS_DIR64)/lib/libgst* $(DST_DIR)/lib64/ && \
cp -a $(TOOLS_DIR64)/lib/gstreamer-1.0 $(DST_DIR)/lib64/
gst_base32: SHELL = $(CONTAINER_SHELL32)
gst_base32: SHELL = $(CONTAINER_SHELL)
gst_base32: $(GST_BASE_CONFIGURE_FILES32)
PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR32))/lib:$(LD_LIBRARY_PATH)" \
@ -813,7 +784,7 @@ GST_GOOD_CONFIGURE_FILES32 := $(GST_GOOD_OBJ32)/build.ninja
GST_GOOD_CONFIGURE_FILES64 := $(GST_GOOD_OBJ64)/build.ninja
# 64-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GST_GOOD_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(GST_GOOD_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(GST_GOOD_CONFIGURE_FILES64): $(MAKEFILE_DEP) gst_base64 | $(GST_GOOD_OBJ64)
if [ -e "$(abspath $(GST_GOOD_OBJ64))"/build.ninja ]; then \
rm -f "$(abspath $(GST_GOOD_OBJ64))"/meson-private/coredata.dat; \
@ -824,7 +795,7 @@ $(GST_GOOD_CONFIGURE_FILES64): $(MAKEFILE_DEP) gst_base64 | $(GST_GOOD_OBJ64)
meson --prefix="$(abspath $(TOOLS_DIR64))" --libdir="lib" $(GST_GOOD_MESON_ARGS) $(MESON_STRIP_ARG) --buildtype=release "$(abspath $(GST_GOOD_OBJ64))"
# 32-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
$(GST_GOOD_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(GST_GOOD_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(GST_GOOD_CONFIGURE_FILES32): $(MAKEFILE_DEP) gst_base32 | $(GST_GOOD_OBJ32)
if [ -e "$(abspath $(GST_GOOD_OBJ32))"/build.ninja ]; then \
rm -f "$(abspath $(GST_GOOD_OBJ32))"/meson-private/coredata.dat; \
@ -853,7 +824,7 @@ gst_good_configure32: $(GST_GOOD_CONFIGURE_FILES32)
gst_good: gst_good32 gst_good64
gst_good64: SHELL = $(CONTAINER_SHELL64)
gst_good64: SHELL = $(CONTAINER_SHELL)
gst_good64: $(GST_GOOD_CONFIGURE_FILES64)
PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR64))/lib:$(LD_LIBRARY_PATH)" \
@ -861,7 +832,7 @@ gst_good64: $(GST_GOOD_CONFIGURE_FILES64)
cp -a $(TOOLS_DIR64)/lib/libgst* $(DST_DIR)/lib64/ && \
cp -a $(TOOLS_DIR64)/lib/gstreamer-1.0 $(DST_DIR)/lib64/
gst_good32: SHELL = $(CONTAINER_SHELL32)
gst_good32: SHELL = $(CONTAINER_SHELL)
gst_good32: $(GST_GOOD_CONFIGURE_FILES32)
PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" \
LD_LIBRARY_PATH="$(abspath $(TOOLS_DIR32))/lib:$(LD_LIBRARY_PATH)" \
@ -888,7 +859,7 @@ faudio: faudio32 faudio64
FAUDIO_CONFIGURE_FILES32 := $(FAUDIO_OBJ32)/Makefile
FAUDIO_CONFIGURE_FILES64 := $(FAUDIO_OBJ64)/Makefile
$(FAUDIO_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(FAUDIO_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(FAUDIO_CONFIGURE_FILES32): $(FAUDIO)/CMakeLists.txt $(MAKEFILE_DEP) gst_base32 | $(FAUDIO_OBJ32)
cd $(dir $@) && \
PKG_CONFIG_PATH=$(abspath $(TOOLS_DIR32))/lib/pkgconfig \
@ -899,7 +870,7 @@ $(FAUDIO_CONFIGURE_FILES32): $(FAUDIO)/CMakeLists.txt $(MAKEFILE_DEP) gst_base32
-DCMAKE_INSTALL_PREFIX="$(abspath $(TOOLS_DIR32))" \
$(FAUDIO_CMAKE_FLAGS)
$(FAUDIO_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(FAUDIO_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(FAUDIO_CONFIGURE_FILES64): $(FAUDIO)/CMakeLists.txt $(MAKEFILE_DEP) gst_base64 | $(FAUDIO_OBJ64)
cd $(dir $@) && \
PKG_CONFIG_PATH=$(abspath $(TOOLS_DIR64))/lib/pkgconfig \
@ -908,7 +879,7 @@ $(FAUDIO_CONFIGURE_FILES64): $(FAUDIO)/CMakeLists.txt $(MAKEFILE_DEP) gst_base64
-DCMAKE_INSTALL_PREFIX="$(abspath $(TOOLS_DIR64))" \
$(FAUDIO_CMAKE_FLAGS)
faudio32: SHELL = $(CONTAINER_SHELL32)
faudio32: SHELL = $(CONTAINER_SHELL)
faudio32: $(FAUDIO_CONFIGURE_FILES32)
+$(MAKE) -C $(FAUDIO_OBJ32) VERBOSE=1
+$(MAKE) -C $(FAUDIO_OBJ32) install VERBOSE=1
@ -916,7 +887,7 @@ faudio32: $(FAUDIO_CONFIGURE_FILES32)
cp -a $(TOOLS_DIR32)/lib/libFAudio* $(DST_DIR)/lib/
[ x"$(STRIP)" = x ] || $(STRIP) $(DST_DIR)/lib/libFAudio.so
faudio64: SHELL = $(CONTAINER_SHELL64)
faudio64: SHELL = $(CONTAINER_SHELL)
faudio64: $(FAUDIO_CONFIGURE_FILES64)
+$(MAKE) -C $(FAUDIO_OBJ64) VERBOSE=1
+$(MAKE) -C $(FAUDIO_OBJ64) install VERBOSE=1
@ -942,7 +913,7 @@ jxrlib: jxrlib32 jxrlib64
JXRLIB_CONFIGURE_FILES32 := $(JXRLIB_OBJ32)/Makefile
JXRLIB_CONFIGURE_FILES64 := $(JXRLIB_OBJ64)/Makefile
$(JXRLIB_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(JXRLIB_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(JXRLIB_CONFIGURE_FILES32): $(JXRLIB)/CMakeLists.txt $(MAKEFILE_DEP) | $(JXRLIB_OBJ32)
cd $(dir $@) && \
CC="$(CC32)" \
@ -952,7 +923,7 @@ $(JXRLIB_CONFIGURE_FILES32): $(JXRLIB)/CMakeLists.txt $(MAKEFILE_DEP) | $(JXRLIB
-DCMAKE_INSTALL_PREFIX="$(abspath $(TOOLS_DIR32))" \
$(JXRLIB_CMAKE_FLAGS)
$(JXRLIB_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(JXRLIB_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(JXRLIB_CONFIGURE_FILES64): $(JXRLIB)/CMakeLists.txt $(MAKEFILE_DEP) | $(JXRLIB_OBJ64)
cd $(dir $@) && \
CFLAGS="$(OPTIMIZE_FLAGS)" \
@ -960,7 +931,7 @@ $(JXRLIB_CONFIGURE_FILES64): $(JXRLIB)/CMakeLists.txt $(MAKEFILE_DEP) | $(JXRLIB
-DCMAKE_INSTALL_PREFIX="$(abspath $(TOOLS_DIR64))" \
$(JXRLIB_CMAKE_FLAGS)
jxrlib32: SHELL = $(CONTAINER_SHELL32)
jxrlib32: SHELL = $(CONTAINER_SHELL)
jxrlib32: $(JXRLIB_CONFIGURE_FILES32)
+$(MAKE) -C $(JXRLIB_OBJ32) VERBOSE=1
+$(MAKE) -C $(JXRLIB_OBJ32) install VERBOSE=1
@ -970,7 +941,7 @@ jxrlib32: $(JXRLIB_CONFIGURE_FILES32)
[ x"$(STRIP)" = x ] || $(STRIP) $(DST_DIR)/lib/libjpegxr.so
[ x"$(STRIP)" = x ] || $(STRIP) $(DST_DIR)/lib/libjxrglue.so
jxrlib64: SHELL = $(CONTAINER_SHELL64)
jxrlib64: SHELL = $(CONTAINER_SHELL)
jxrlib64: $(JXRLIB_CONFIGURE_FILES64)
+$(MAKE) -C $(JXRLIB_OBJ64) VERBOSE=1
+$(MAKE) -C $(JXRLIB_OBJ64) install VERBOSE=1
@ -1007,7 +978,7 @@ LSTEAMCLIENT_CONFIGURE_FILES32 := $(LSTEAMCLIENT_OBJ32)/Makefile
LSTEAMCLIENT_CONFIGURE_FILES64 := $(LSTEAMCLIENT_OBJ64)/Makefile
# 64bit-configure
$(LSTEAMCLIENT_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(LSTEAMCLIENT_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(LSTEAMCLIENT_CONFIGURE_FILES64): $(LSTEAMCLIENT64) $(MAKEFILE_DEP) | $(LSTEAMCLIENT_OBJ64) $(WINEMAKER)
cd $(dir $@) && \
$(WINEMAKER) --nosource-fix --nolower-include --nodlls --nomsvcrt \
@ -1026,7 +997,7 @@ $(LSTEAMCLIENT_CONFIGURE_FILES64): $(LSTEAMCLIENT64) $(MAKEFILE_DEP) | $(LSTEAMC
echo >> ./Makefile 'lsteamclient_dll_LDFLAGS := -ldl $$(patsubst %.spec,$$(SRCDIR)/%.spec,$$(lsteamclient_dll_LDFLAGS))'
# 32-bit configure
$(LSTEAMCLIENT_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(LSTEAMCLIENT_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(LSTEAMCLIENT_CONFIGURE_FILES32): $(LSTEAMCLIENT32) $(MAKEFILE_DEP) | $(LSTEAMCLIENT_OBJ32) $(WINEMAKER)
cd $(dir $@) && \
$(WINEMAKER) --nosource-fix --nolower-include --nodlls --nomsvcrt --wine32 \
@ -1060,7 +1031,7 @@ lsteamclient_configure32: $(LSTEAMCLIENT_CONFIGURE_FILES32)
lsteamclient: lsteamclient32 lsteamclient64
lsteamclient64: SHELL = $(CONTAINER_SHELL64)
lsteamclient64: SHELL = $(CONTAINER_SHELL)
lsteamclient64: $(LSTEAMCLIENT_CONFIGURE_FILES64) | $(WINE_BUILDTOOLS64) $(filter $(MAKECMDGOALS),wine64 wine32 wine)
+env PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" CXXFLAGS="-Wno-attributes $(COMMON_FLAGS) -std=gnu++11 -g" CFLAGS="$(COMMON_FLAGS) -g" \
$(MAKE) -C $(LSTEAMCLIENT_OBJ64)
@ -1068,7 +1039,7 @@ lsteamclient64: $(LSTEAMCLIENT_CONFIGURE_FILES64) | $(WINE_BUILDTOOLS64) $(filte
mkdir -pv $(DST_DIR)/lib64/wine/
cp -af $(LSTEAMCLIENT_OBJ64)/lsteamclient.dll.so $(DST_DIR)/lib64/wine/
lsteamclient32: SHELL = $(CONTAINER_SHELL32)
lsteamclient32: SHELL = $(CONTAINER_SHELL)
lsteamclient32: $(LSTEAMCLIENT_CONFIGURE_FILES32) | $(WINE_BUILDTOOLS32) $(filter $(MAKECMDGOALS),wine64 wine32 wine)
+env PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" LDFLAGS="-m32" CXXFLAGS="-m32 -Wno-attributes $(COMMON_FLAGS) -std=gnu++11 -g" CFLAGS="-m32 $(COMMON_FLAGS) -g" \
$(MAKE) -C $(LSTEAMCLIENT_OBJ32)
@ -1095,7 +1066,7 @@ openxr: openxr64
OPENXR_CONFIGURE_FILES64 := $(OPENXR_OBJ64)/Makefile
$(OPENXR_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(OPENXR_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(OPENXR_CONFIGURE_FILES64): $(OPENXR)/CMakeLists.txt $(MAKEFILE_DEP) | $(OPENXR_OBJ64)
cd $(dir $@) && \
CFLAGS="$(OPTIMIZE_FLAGS)" \
@ -1103,7 +1074,7 @@ $(OPENXR_CONFIGURE_FILES64): $(OPENXR)/CMakeLists.txt $(MAKEFILE_DEP) | $(OPENXR
-DCMAKE_INSTALL_PREFIX="$(abspath $(TOOLS_DIR64))" \
$(OPENXR_CMAKE_FLAGS)
openxr64: SHELL = $(CONTAINER_SHELL64)
openxr64: SHELL = $(CONTAINER_SHELL)
openxr64: $(OPENXR_CONFIGURE_FILES64)
+$(MAKE) -C $(OPENXR_OBJ64) VERBOSE=1
+$(MAKE) -C $(OPENXR_OBJ64) install VERBOSE=1
@ -1131,7 +1102,7 @@ $(WINEOPENXR64): $(WINEOPENXR64)/.created
WINEOPENXR_CONFIGURE_FILES64 := $(WINEOPENXR_OBJ64)/Makefile
# 64bit-configure
$(WINEOPENXR_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(WINEOPENXR_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(WINEOPENXR_CONFIGURE_FILES64): $(WINEOPENXR64) $(MAKEFILE_DEP) | $(WINEOPENXR_OBJ64) $(WINEMAKER)
cd $(dir $@) && \
$(WINEMAKER) --nosource-fix --nolower-include --nodlls --nomsvcrt \
@ -1165,7 +1136,7 @@ wineopenxr_configure64: $(WINEOPENXR_CONFIGURE_FILES64)
wineopenxr: wineopenxr64
wineopenxr64: SHELL = $(CONTAINER_SHELL64)
wineopenxr64: SHELL = $(CONTAINER_SHELL)
wineopenxr64: $(WINEOPENXR_CONFIGURE_FILES64) openxr64 | $(WINE_BUILDTOOLS64) $(filter $(MAKECMDGOALS),wine64 wine32 wine)
+env PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" CFLAGS="$(COMMON_FLAGS) -g" \
$(MAKE) -C $(WINEOPENXR_OBJ64)
@ -1187,7 +1158,7 @@ $(STEAMEXE_SYN): $(STEAMEXE_SYN)/.created
STEAMEXE_CONFIGURE_FILES := $(STEAMEXE_OBJ)/Makefile
# 32-bit configure
$(STEAMEXE_CONFIGURE_FILES): SHELL = $(CONTAINER_SHELL32)
$(STEAMEXE_CONFIGURE_FILES): SHELL = $(CONTAINER_SHELL)
$(STEAMEXE_CONFIGURE_FILES): $(STEAMEXE_SYN) $(MAKEFILE_DEP) | $(STEAMEXE_OBJ) $(WINEMAKER)
cd $(dir $@) && \
$(WINEMAKER) --nosource-fix --nolower-include --nodlls --wine32 \
@ -1214,7 +1185,7 @@ GOAL_TARGETS_LIBS += steam
steam_configure: $(STEAMEXE_CONFIGURE_FILES)
steam: SHELL = $(CONTAINER_SHELL32)
steam: SHELL = $(CONTAINER_SHELL)
steam: $(STEAMEXE_CONFIGURE_FILES) | $(WINE_BUILDTOOLS32) $(filter $(MAKECMDGOALS),wine64 wine32 wine)
+env PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" LDFLAGS="-m32" CXXFLAGS="-std=gnu++11 -m32 -Wno-attributes $(COMMON_FLAGS) -g" CFLAGS="-m32 $(COMMON_FLAGS) -g" \
$(MAKE) -C $(STEAMEXE_OBJ)
@ -1250,7 +1221,7 @@ WINE32_MAKE_ARGS := \
dlldir="$(abspath $(TOOLS_DIR32))/lib/wine"
# 64bit-configure
$(WINE_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(WINE_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(WINE_CONFIGURE_FILES64): $(MAKEFILE_DEP) | faudio64 jxrlib64 gst_base64 $(WINE_OBJ64)
cd $(dir $@) && \
../$(WINE)/configure \
@ -1270,7 +1241,7 @@ $(WINE_CONFIGURE_FILES64): $(MAKEFILE_DEP) | faudio64 jxrlib64 gst_base64 $(WINE
CROSSDEBUG=split-dwarf
# 32-bit configure
$(WINE_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(WINE_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(WINE_CONFIGURE_FILES32): $(MAKEFILE_DEP) | faudio32 jxrlib32 gst_base32 $(WINE_OBJ32)
cd $(dir $@) && \
../$(WINE)/configure \
@ -1312,7 +1283,7 @@ wine: wine32 wine64
$(WINE_BUILDTOOLS64) $(WINE_OUT) wine64: wine64-intermediate
wine64-intermediate: SHELL = $(CONTAINER_SHELL64)
wine64-intermediate: SHELL = $(CONTAINER_SHELL)
wine64-intermediate: $(WINE_CONFIGURE_FILES64)
+$(MAKE) -C $(WINE_OBJ64) $(WINE_COMMON_MAKE_ARGS)
+$(MAKE) -C $(WINE_OBJ64) $(WINE_COMMON_MAKE_ARGS) install-lib
@ -1326,7 +1297,7 @@ wine64-intermediate: $(WINE_CONFIGURE_FILES64)
## https://wiki.winehq.org/Packaging#WoW64_Workarounds
$(WINE_BUILDTOOLS32) wine32: wine32-intermediate
wine32-intermediate: SHELL = $(CONTAINER_SHELL32)
wine32-intermediate: SHELL = $(CONTAINER_SHELL)
wine32-intermediate: $(WINE_CONFIGURE_FILES32)
+$(MAKE) -C $(WINE_OBJ32) $(WINE_COMMON_MAKE_ARGS)
+$(MAKE) -C $(WINE_OBJ32) $(WINE_COMMON_MAKE_ARGS) install-lib
@ -1357,7 +1328,7 @@ $(VRCLIENT32): $(VRCLIENT) $(MAKEFILE_DEP)
mv $(VRCLIENT32)/vrclient/vrclient_x64.spec $(VRCLIENT32)/vrclient/vrclient.spec
# 64bit-configure
$(VRCLIENT_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(VRCLIENT_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(VRCLIENT_CONFIGURE_FILES64): $(MAKEFILE_DEP) $(VRCLIENT) $(VRCLIENT)/vrclient_x64 | $(VRCLIENT_OBJ64) $(WINEMAKER)
cd $(VRCLIENT) && \
$(WINEMAKER) --nosource-fix --nolower-include --nodlls --nomsvcrt \
@ -1375,7 +1346,7 @@ $(VRCLIENT_CONFIGURE_FILES64): $(MAKEFILE_DEP) $(VRCLIENT) $(VRCLIENT)/vrclient_
echo >> $(abspath $(dir $@))/Makefile 'vrclient_x64_dll_LDFLAGS := -ldl $$(patsubst %.spec,$$(SRCDIR)/%.spec,$$(vrclient_x64_dll_LDFLAGS))'
# 32-bit configure
$(VRCLIENT_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(VRCLIENT_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(VRCLIENT_CONFIGURE_FILES32): $(MAKEFILE_DEP) $(VRCLIENT32) | $(VRCLIENT_OBJ32) $(WINEMAKER)
$(WINEMAKER) --nosource-fix --nolower-include --nodlls --nomsvcrt \
--wine32 \
@ -1408,7 +1379,7 @@ vrclient_configure64: $(VRCLIENT_CONFIGURE_FILES64)
vrclient: vrclient32 vrclient64
vrclient64: SHELL = $(CONTAINER_SHELL64)
vrclient64: SHELL = $(CONTAINER_SHELL)
vrclient64: $(VRCLIENT_CONFIGURE_FILES64) | $(WINE_BUILDTOOLS64) $(filter $(MAKECMDGOALS),wine64 wine32 wine)
+env CXXFLAGS="-Wno-attributes -std=c++0x $(COMMON_FLAGS) -g" CFLAGS="$(COMMON_FLAGS) -g" PATH="$(abspath $(TOOLS_DIR64))/bin:$(PATH)" \
$(MAKE) -C $(VRCLIENT_OBJ64)
@ -1420,7 +1391,7 @@ vrclient64: $(VRCLIENT_CONFIGURE_FILES64) | $(WINE_BUILDTOOLS64) $(filter $(MAKE
cp -af ../$(VRCLIENT_OBJ64)/vrclient_x64.dll.so ../$(DST_DIR)/lib64/wine/ && \
cp -af ../$(VRCLIENT_OBJ64)/vrclient_x64.dll.fake ../$(DST_DIR)/lib64/wine/fakedlls/vrclient_x64.dll
vrclient32: SHELL = $(CONTAINER_SHELL32)
vrclient32: SHELL = $(CONTAINER_SHELL)
vrclient32: $(VRCLIENT_CONFIGURE_FILES32) | $(WINE_BUILDTOOLS32) $(filter $(MAKECMDGOALS),wine64 wine32 wine)
+env LDFLAGS="-m32" CXXFLAGS="-m32 -Wno-attributes -std=c++0x $(COMMON_FLAGS) -g" CFLAGS="-m32 $(COMMON_FLAGS) -g" PATH="$(abspath $(TOOLS_DIR32))/bin:$(PATH)" \
$(MAKE) -C $(VRCLIENT_OBJ32)
@ -1505,7 +1476,7 @@ dxvk32: $(DXVK_CONFIGURE_FILES32)
VKD3D_CONFIGURE_FILES32 := $(VKD3D_OBJ32)/build.ninja
VKD3D_CONFIGURE_FILES64 := $(VKD3D_OBJ64)/build.ninja
$(VKD3D_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL32)
$(VKD3D_CONFIGURE_FILES32): SHELL = $(CONTAINER_SHELL)
$(VKD3D_CONFIGURE_FILES32): $(VKD3D)/meson.build $(VKD3D)/build-win32.txt | $(VKD3D_OBJ32)
cd $(abspath $(VKD3D_OBJ32)) && \
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" \
@ -1515,14 +1486,14 @@ $(VKD3D_CONFIGURE_FILES32): $(VKD3D)/meson.build $(VKD3D)/build-win32.txt | $(VK
--buildtype=release -Denable_standalone_d3d12=true \
"$(abspath $(VKD3D))"
vkd3d32: SHELL = $(CONTAINER_SHELL32)
vkd3d32: SHELL = $(CONTAINER_SHELL)
vkd3d32: $(VKD3D_CONFIGURE_FILES32)
ninja -C "$(VKD3D_OBJ32)" install
mkdir -p "$(DST_DIR)"/lib/wine/vkd3d-proton
cp -af "$(VKD3D_OBJ32)/bin/d3d12.dll" "$(DST_DIR)"/lib/wine/vkd3d-proton/
rm -f "$(DST_DIR)"/lib/wine/vkd3d-proton/version && if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- vkd3d-proton ) > "$(DST_DIR)"/lib/wine/vkd3d-proton/version; fi
$(VKD3D_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL64)
$(VKD3D_CONFIGURE_FILES64): SHELL = $(CONTAINER_SHELL)
$(VKD3D_CONFIGURE_FILES64): $(VKD3D)/meson.build $(VKD3D)/build-win64.txt | $(VKD3D_OBJ64)
cd $(abspath $(VKD3D_OBJ64)) && \
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" \
@ -1532,7 +1503,7 @@ $(VKD3D_CONFIGURE_FILES64): $(VKD3D)/meson.build $(VKD3D)/build-win64.txt | $(VK
--buildtype=release -Denable_standalone_d3d12=true \
"$(abspath $(VKD3D))"
vkd3d64: SHELL = $(CONTAINER_SHELL64)
vkd3d64: SHELL = $(CONTAINER_SHELL)
vkd3d64: $(VKD3D_CONFIGURE_FILES64)
ninja -C "$(VKD3D_OBJ64)" install
mkdir -p "$(DST_DIR)"/lib64/wine/vkd3d-proton
@ -1547,7 +1518,7 @@ vkd3d-proton: vkd3d32 vkd3d64
# build_vrclient64_tests
# build_vrclient32_tests
mediaconv32: SHELL = $(CONTAINER_SHELL32)
mediaconv32: SHELL = $(CONTAINER_SHELL)
mediaconv32: $(MAKEFILE_DEP) gstreamer32 | $(MEDIACONV_OBJ32)
cd $(abspath $(MEDIACONV)) && \
PKG_CONFIG_ALLOW_CROSS=1 \
@ -1555,7 +1526,7 @@ mediaconv32: $(MAKEFILE_DEP) gstreamer32 | $(MEDIACONV_OBJ32)
cargo build --target i686-unknown-linux-gnu --target-dir $(abspath $(MEDIACONV_OBJ32)) $(CARGO_BUILD_ARG)
cp -a $(abspath $(MEDIACONV_OBJ32))/i686-unknown-linux-gnu/release/libprotonmediaconverter.so $(abspath $(DST_DIR))/lib/gstreamer-1.0/
mediaconv64: SHELL = $(CONTAINER_SHELL64)
mediaconv64: SHELL = $(CONTAINER_SHELL)
mediaconv64: $(MAKEFILE_DEP) gstreamer64 | $(MEDIACONV_OBJ64)
cd $(abspath $(MEDIACONV)) && \
PKG_CONFIG_PATH=$(abspath $(TOOLS_DIR64))/lib/pkgconfig \

View file

@ -38,23 +38,6 @@ cmd() { showcmd "$@"; "$@"; }
THIS_COMMAND="$0 $*" # For printing, not evaling
MAKEFILE="./Makefile"
function check_steamrt_image() {
local type="$1"
local name="$2"
# nil nil -> no container
[[ -n $type || -n $name ]] || return 0;
# Otherwise both needed
[[ -n $type && -n $name ]] || die "Steam Runtime SDK option must be of form type:image"
# Type known?
[[ $type = docker ]] || die "Only supported Steam Runtime type is currently docker"
# Name must be alphanumericish for dumping into makefile and sanity.
[[ $name =~ ^[a-zA-Z0-9_.-]+$ ]] || die "Runtime image name should be alphanumeric ($name)"
}
# This is not rigorous. Do not use this for untrusted input. Do not. If you need a version of
# this for untrusted input, rethink the path that got you here.
function escape_for_make() {
@ -67,14 +50,8 @@ function escape_for_make() {
}
function configure() {
local steamrt64_type="${1%:*}"
local steamrt64_name="${1#*:}"
local steamrt32_type="${2%:*}"
local steamrt32_name="${2#*:}"
check_steamrt_image "$steamrt64_type" "$steamrt64_name"
check_steamrt_image "$steamrt32_type" "$steamrt32_name"
local steamrt_image="$1"
local steamrt_name="$2"
local srcdir
srcdir="$(dirname "$0")"
@ -99,10 +76,8 @@ function configure() {
echo "BUILD_NAME := $(escape_for_make "$build_name")"
# SteamRT
echo "STEAMRT64_MODE := $(escape_for_make "$steamrt64_type")"
echo "STEAMRT64_IMAGE := $(escape_for_make "$steamrt64_name")"
echo "STEAMRT32_MODE := $(escape_for_make "$steamrt32_type")"
echo "STEAMRT32_IMAGE := $(escape_for_make "$steamrt32_name")"
echo "STEAMRT_NAME := $(escape_for_make "$steamrt_name")"
echo "STEAMRT_IMAGE := $(escape_for_make "$steamrt_image")"
if [[ -n "$arg_docker_opts" ]]; then
echo "DOCKER_OPTS := $arg_docker_opts"
@ -121,8 +96,8 @@ function configure() {
# Parse arguments
#
arg_steamrt32=""
arg_steamrt64=""
arg_steamrt="soldier"
arg_steamrt_image=""
arg_no_steamrt=""
arg_build_name=""
arg_docker_opts=""
@ -165,12 +140,12 @@ function parse_args() {
elif [[ $arg = --docker-opts ]]; then
arg_docker_opts="$val"
val_used=1
elif [[ $arg = --steam-runtime32 ]]; then
elif [[ $arg = --steam-runtime-image ]]; then
val_used=1
arg_steamrt32="$val"
elif [[ $arg = --steam-runtime64 ]]; then
arg_steamrt_image="$val"
elif [[ $arg = --steam-runtime ]]; then
val_used=1
arg_steamrt64="$val"
arg_steamrt="$val"
elif [[ $arg = --no-steam-runtime ]]; then
arg_no_steamrt=1
else
@ -207,7 +182,7 @@ function parse_args() {
}
usage() {
"$1" "Usage: $0 { --no-steam-runtime | --steam-runtime32=<image> --steam-runtime64=<image> }"
"$1" "Usage: $0 { --no-steam-runtime | --steam-runtime-image=<image> --steam-runtime=<name> }"
"$1" " Generate a Makefile for building Proton. May be run from another directory to create"
"$1" " out-of-tree build directories (e.g. mkdir mybuild && cd mybuild && ../configure.sh)"
"$1" ""
@ -222,13 +197,11 @@ usage() {
"$1" " Proton builds that are to be installed & run under the steam client must be built with"
"$1" " the Steam Runtime SDK to ensure compatibility. See README.md for more information."
"$1" ""
"$1" " --steam-runtime64=docker:<image> Automatically invoke the Steam Runtime SDK in <image>"
"$1" " --steam-runtime-image=<image> Automatically invoke the Steam Runtime SDK in <image>"
"$1" " for build steps that must be run in an SDK"
"$1" " environment. See README.md for instructions to"
"$1" " create this image."
"$1" ""
"$1" " --steam-runtime32=docker:<image> The 32-bit docker image to use for steps that require"
"$1" " a 32-bit environment. See --steam-runtime64."
"$1" " --steam-runtime=soldier Name of the steam runtime release to build for (soldier, scout)."
"$1" ""
"$1" " --no-steam-runtime Do not automatically invoke any runtime SDK as part of the build."
"$1" " Build steps may still be manually run in a runtime environment."
@ -240,10 +213,10 @@ parse_args "$@" || usage err
[[ -z $arg_help ]] || usage info
# Sanity check arguments
if [[ -n $arg_no_steamrt && ( -n $arg_steamrt32 || -n $arg_steamrt64 ) ]]; then
die "Cannot specify a Steam Runtime SDK as well as --no-steam-runtime"
elif [[ -z $arg_no_steamrt && ( -z $arg_steamrt32 || -z $arg_steamrt64 ) ]]; then
die "Must specify either --no-steam-runtime or all of --steam-runtime32 and --steam-runtime64"
if [[ -n $arg_no_steamrt && -n $arg_steamrt_image ]]; then
die "Cannot specify --steam-runtime-image as well as --no-steam-runtime"
elif [[ -z $arg_no_steamrt && -z $arg_steamrt_image ]]; then
die "Must specify either --no-steam-runtime or --steam-runtime-image"
fi
configure "$arg_steamrt64" "$arg_steamrt32"
configure "$arg_steamrt_image" "$arg_steamrt"