diff --git a/Makefile b/Makefile index 220fe918..c4316879 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/README.md b/README.md index 57ad59e3..1b7e6a38 100644 --- a/README.md +++ b/README.md @@ -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: diff --git a/build/makefile_base.mak b/build/makefile_base.mak index d8519004..95a5eae2 100644 --- a/build/makefile_base.mak +++ b/build/makefile_base.mak @@ -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 := +STEAMRT_NAME ?= soldier +ifeq ($(STEAMRT_NAME),soldier) +TOOLMANIFEST_VDF_SRC := toolmanifest_runtime.vdf +else 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) - 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)) 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),) - SUBMAKE_JOBS ?= 36 - MAKE := make -j$(SUBMAKE_JOBS) +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 \ diff --git a/configure.sh b/configure.sh index 580476d9..4185b3ef 100755 --- a/configure.sh +++ b/configure.sh @@ -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= --steam-runtime64= }" + "$1" "Usage: $0 { --no-steam-runtime | --steam-runtime-image= --steam-runtime= }" "$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: Automatically invoke the Steam Runtime SDK in " - "$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: The 32-bit docker image to use for steps that require" - "$1" " a 32-bit environment. See --steam-runtime64." + "$1" " --steam-runtime-image= Automatically invoke the Steam Runtime SDK in " + "$1" " for build steps that must be run in an SDK" + "$1" " environment. See README.md for instructions to" + "$1" " create this image." + "$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"