mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-01-12 22:58:07 +03:00
Makefile: Remove Vagrant build path
This commit is contained in:
parent
3bffbe24b3
commit
9d742a5332
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@
|
|||||||
|
|
||||||
/.vagrant/
|
/.vagrant/
|
||||||
/vagrant_share/
|
/vagrant_share/
|
||||||
|
/build/
|
||||||
|
163
Makefile
163
Makefile
@ -13,8 +13,10 @@ endif
|
|||||||
# remove special chars
|
# remove special chars
|
||||||
override _build_name := $(shell echo $(_build_name) | tr -dc '[:alnum:] ._-')
|
override _build_name := $(shell echo $(_build_name) | tr -dc '[:alnum:] ._-')
|
||||||
|
|
||||||
|
BUILD_ROOT := build
|
||||||
|
|
||||||
# make doesn't handle spaces well... replace them with underscores in paths
|
# make doesn't handle spaces well... replace them with underscores in paths
|
||||||
BUILD_DIR := "build-$(shell echo $(_build_name) | sed -e 's/ /_/g')"
|
BUILD_DIR := $(BUILD_ROOT)/build-$(shell echo $(_build_name) | sed -e 's/ /_/g')
|
||||||
STEAM_DIR := $(HOME)/.steam/root
|
STEAM_DIR := $(HOME)/.steam/root
|
||||||
|
|
||||||
ifeq ($(build_name),)
|
ifeq ($(build_name),)
|
||||||
@ -23,11 +25,6 @@ else
|
|||||||
DEPLOY_DIR := $(_build_name)
|
DEPLOY_DIR := $(_build_name)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enable_ccache := 1
|
|
||||||
ifneq ($(enable_ccache),0)
|
|
||||||
CCACHE_FLAG := ENABLE_CCACHE=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(module),)
|
ifneq ($(module),)
|
||||||
ifneq ($(findstring .,$(module)),)
|
ifneq ($(findstring .,$(module)),)
|
||||||
MODULE_SFX :=
|
MODULE_SFX :=
|
||||||
@ -41,7 +38,7 @@ ifneq ($(unstripped),)
|
|||||||
DEPLOY_DIR := $(DEPLOY_DIR)_unstripped
|
DEPLOY_DIR := $(DEPLOY_DIR)_unstripped
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CONFIGURE_CMD := ../proton/configure.sh \
|
CONFIGURE_CMD := ../../configure.sh \
|
||||||
--build-name="$(_build_name)"
|
--build-name="$(_build_name)"
|
||||||
|
|
||||||
ifneq ($(protonsdk_version),)
|
ifneq ($(protonsdk_version),)
|
||||||
@ -50,10 +47,15 @@ else
|
|||||||
protonsdk_version := $(shell grep '^arg_protonsdk_image=' configure.sh|xargs echo|cut -d: -f2)
|
protonsdk_version := $(shell grep '^arg_protonsdk_image=' configure.sh|xargs echo|cut -d: -f2)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
enable_ccache := 1
|
||||||
|
ifneq ($(enable_ccache),0)
|
||||||
|
CCACHE_FLAG := ENABLE_CCACHE=1
|
||||||
|
CONFIGURE_CMD += --enable-ccache
|
||||||
|
endif
|
||||||
|
|
||||||
all: help
|
all: help
|
||||||
|
|
||||||
.PHONY: help vagrant clean configure proton install deploy module protonsdk
|
.PHONY: help clean configure proton install deploy module protonsdk
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Proton Makefile instructions"
|
@echo "Proton Makefile instructions"
|
||||||
@ -61,8 +63,8 @@ help:
|
|||||||
@echo "\"Quick start\" Makefile targets:"
|
@echo "\"Quick start\" Makefile targets:"
|
||||||
@echo " install - Install Proton into current user's Steam installation"
|
@echo " install - Install Proton into current user's Steam installation"
|
||||||
@echo " redist - Build a package suitable for manual installation or distribution"
|
@echo " redist - Build a package suitable for manual installation or distribution"
|
||||||
@echo " to other users in vagrant_share/ named after the nearest git tag"
|
@echo " to other users in $(BUILD_ROOT)/ named after the nearest git tag"
|
||||||
@echo " deploy - Build Steam deployment files into a directory in vagrant_share/ named"
|
@echo " deploy - Build Steam deployment files into a directory in $(BUILD_ROOT)/ named"
|
||||||
@echo " after the nearest git tag"
|
@echo " after the nearest git tag"
|
||||||
@echo " clean - Delete the Proton build directory"
|
@echo " clean - Delete the Proton build directory"
|
||||||
@echo ""
|
@echo ""
|
||||||
@ -78,50 +80,36 @@ help:
|
|||||||
@echo " use protonsdk_version=local to build it locally."
|
@echo " use protonsdk_version=local to build it locally."
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Development targets:"
|
@echo "Development targets:"
|
||||||
@echo " vagrant - Start Vagrant VM"
|
|
||||||
@echo " configure - Configure Proton build directory"
|
@echo " configure - Configure Proton build directory"
|
||||||
@echo " proton - Build Proton"
|
@echo " proton - Build Proton"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo " The following targets are development targets only useful after building Proton."
|
@echo " The following targets are development targets only useful after building Proton."
|
||||||
@echo " module - Rebuild a single Wine module and copy into vagrant_share/."
|
@echo " module - Rebuild a single Wine module and copy into $(BUILD_ROOT)/<module>/."
|
||||||
@echo " Specify module variable: make module=kernel32 module"
|
@echo " Specify module variable: make module=kernel32 module"
|
||||||
@echo " dxvk - Rebuild DXVK and copy it into vagrant_share/."
|
@echo " dxvk - Rebuild DXVK and copy it into $(BUILD_ROOT)/."
|
||||||
@echo " lsteamclient - Rebuild the Steam client wrapper and copy it into vagrant_share/."
|
@echo " lsteamclient - Rebuild the Steam client wrapper and copy it into $(BUILD_ROOT)/."
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Examples:"
|
@echo "Examples:"
|
||||||
@echo " make install - Build Proton and install into this user's Steam installation,"
|
@echo " make install - Build Proton and install into this user's Steam installation,"
|
||||||
@echo " with the current Proton branch name as the tool's name."
|
@echo " with the current Proton branch name as the tool's name."
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo " make redist - Build a Proton redistribution package in a tagged directory"
|
@echo " make redist - Build a Proton redistribution package in a tagged directory"
|
||||||
@echo " in vagrant_share/."
|
@echo " in $(BUILD_ROOT)/."
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo " make build_name=mytest install - Build Proton with the tool name \"mytest\" and"
|
@echo " make build_name=mytest install - Build Proton with the tool name \"mytest\" and"
|
||||||
@echo " install into this user's Steam installation."
|
@echo " install into this user's Steam installation."
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo " make build_name=mytest module=dsound module - Build only the dsound module"
|
@echo " make build_name=mytest module=dsound module - Build only the dsound module"
|
||||||
@echo " in the \"mytest\" build directory and place it into vagrant_share/dsound/."
|
@echo " in the \"mytest\" build directory and place it into $(BUILD_ROOT)/dsound/."
|
||||||
@echo ""
|
|
||||||
@echo "Running out of disk space in the VM? See resize-vagrant-disk.sh"
|
|
||||||
|
|
||||||
VAGRANT_SHELL := vagrant ssh
|
clean:
|
||||||
|
rm -rf $(BUILD_DIR)
|
||||||
|
|
||||||
vagrant: private SHELL := $(SHELL)
|
protonsdk:
|
||||||
vagrant:
|
|
||||||
vagrant up
|
|
||||||
vagrant rsync debian10
|
|
||||||
|
|
||||||
clean: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
clean: vagrant
|
|
||||||
rm -rf $(BUILD_DIR)/
|
|
||||||
|
|
||||||
protonsdk: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
protonsdk: vagrant
|
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C proton/docker $(UNSTRIPPED) $(CCACHE_FLAG) PROTONSDK_VERSION=$(protonsdk_version) proton
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C proton/docker $(UNSTRIPPED) $(CCACHE_FLAG) PROTONSDK_VERSION=$(protonsdk_version) proton
|
||||||
|
|
||||||
configure: private SHELL := $(VAGRANT_SHELL)
|
configure: | $(BUILD_DIR)
|
||||||
configure: vagrant
|
if [ ! -e $(BUILD_DIR)/Makefile ]; then \
|
||||||
if [ ! -e $(BUILD_DIR)/Makefile ]; \
|
|
||||||
then mkdir -p $(BUILD_DIR); \
|
|
||||||
(cd $(BUILD_DIR) && $(CONFIGURE_CMD)); \
|
(cd $(BUILD_DIR) && $(CONFIGURE_CMD)); \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -129,109 +117,96 @@ ifeq ($(protonsdk_version),local)
|
|||||||
configure: protonsdk
|
configure: protonsdk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
downloads: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
downloads: configure
|
downloads: configure
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR) downloads
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR) downloads
|
||||||
|
|
||||||
proton: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
proton: downloads
|
proton: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dist && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dist && \
|
||||||
echo "Proton built in VM. Use 'install' or 'deploy' targets to retrieve the build."
|
echo "Proton built in VM. Use 'install' or 'deploy' targets to retrieve the build."
|
||||||
|
|
||||||
install-internal: | vagrant_share/compatibilitytools.d/$(_build_name)
|
install-internal: | $(BUILD_ROOT)/compatibilitytools.d/$(_build_name)
|
||||||
install-internal: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
install-internal: downloads
|
install-internal: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) STEAM_DIR=/vagrant/ install
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) install
|
||||||
|
|
||||||
install: install-internal
|
install: install-internal
|
||||||
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
|
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
|
||||||
cp -Rf --no-dereference --preserve=mode,links vagrant_share/compatibilitytools.d/$(_build_name) $(STEAM_DIR)/compatibilitytools.d/
|
cp -Rf --no-dereference --preserve=mode,links $(BUILD_ROOT)/compatibilitytools.d/$(_build_name) $(STEAM_DIR)/compatibilitytools.d/
|
||||||
echo "Proton installed to your local Steam installation"
|
echo "Proton installed to your local Steam installation"
|
||||||
|
|
||||||
redist: | vagrant_share/$(DEPLOY_DIR)
|
redist: | $(BUILD_ROOT)/$(DEPLOY_DIR)
|
||||||
redist: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
redist: downloads
|
redist: downloads
|
||||||
rm -rf /vagrant/$(DEPLOY_DIR)/* && \
|
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)/* && \
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && \
|
||||||
cp -Rf $(BUILD_DIR)/redist/* /vagrant/$(DEPLOY_DIR) && \
|
cp -Rf $(BUILD_DIR)/redist/* $(BUILD_ROOT)/$(DEPLOY_DIR) && \
|
||||||
echo "Proton build available at vagrant_share/$(DEPLOY_DIR)"
|
echo "Proton build available at $(BUILD_ROOT)/$(DEPLOY_DIR)"
|
||||||
|
|
||||||
deploy: | vagrant_share/$(DEPLOY_DIR)-deploy
|
deploy: | $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy
|
||||||
deploy: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
deploy: downloads
|
deploy: downloads
|
||||||
rm -rf /vagrant/$(DEPLOY_DIR)-deploy/* && \
|
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy/* && \
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && \
|
||||||
cp -Rf $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)-deploy && \
|
cp -Rf $(BUILD_DIR)/deploy/* $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy && \
|
||||||
echo "Proton deployed to vagrant_share/$(DEPLOY_DIR)-deploy"
|
echo "Proton deployed to $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy"
|
||||||
|
|
||||||
module: | vagrant_share/$(module)/lib/wine/i386-windows
|
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-windows
|
||||||
module: | vagrant_share/$(module)/lib/wine/i386-unix
|
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-unix
|
||||||
module: | vagrant_share/$(module)/lib64/wine/x86_64-windows
|
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows
|
||||||
module: | vagrant_share/$(module)/lib64/wine/x86_64-unix
|
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix
|
||||||
module: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
module: downloads
|
module: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) module=$(module) module && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) module=$(module) module && \
|
||||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module)$(MODULE_SFX)* /vagrant/$(module)/lib/wine/i386-windows/ && \
|
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module)$(MODULE_SFX)* $(BUILD_ROOT)/$(module)/lib/wine/i386-windows/ && \
|
||||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module)$(MODULE_SFX)* /vagrant/$(module)/lib64/wine/x86_64-windows/ && \
|
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module)$(MODULE_SFX)* $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows/ && \
|
||||||
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so ]; then \
|
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so ]; then \
|
||||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so /vagrant/$(module)/lib/wine/i386-unix/ && \
|
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
|
||||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module).so /vagrant/$(module)/lib64/wine/x86_64-unix/; \
|
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module).so $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix/; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dxvk: | vagrant_share/dxvk/lib/wine/dxvk
|
dxvk: | $(BUILD_ROOT)/dxvk/lib/wine/dxvk
|
||||||
dxvk: | vagrant_share/dxvk/lib64/wine/dxvk
|
dxvk: | $(BUILD_ROOT)/dxvk/lib64/wine/dxvk
|
||||||
dxvk: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
dxvk: downloads
|
dxvk: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll /vagrant/dxvk/lib/wine/dxvk/ && \
|
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib/wine/dxvk/ && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll /vagrant/dxvk/lib64/wine/dxvk/
|
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib64/wine/dxvk/
|
||||||
|
|
||||||
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib/wine/nvapi
|
dxvk-nvapi: | $(BUILD_ROOT)/dxvk-nvapi/lib/wine/nvapi
|
||||||
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib64/wine/nvapi
|
dxvk-nvapi: | $(BUILD_ROOT)/dxvk-nvapi/lib64/wine/nvapi
|
||||||
dxvk-nvapi: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
dxvk-nvapi: downloads
|
dxvk-nvapi: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk-nvapi && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk-nvapi && \
|
||||||
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib/wine/nvapi/ && \
|
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll $(BUILD_ROOT)/dxvk-nvapi/lib/wine/nvapi/ && \
|
||||||
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib64/wine/nvapi/
|
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll $(BUILD_ROOT)/dxvk-nvapi/lib64/wine/nvapi/
|
||||||
|
|
||||||
vkd3d-proton: | vagrant_share/vkd3d-proton/lib/wine/vkd3d-proton
|
vkd3d-proton: | $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton
|
||||||
vkd3d-proton: | vagrant_share/vkd3d-proton/lib64/wine/vkd3d-proton
|
vkd3d-proton: | $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton
|
||||||
vkd3d-proton: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
vkd3d-proton: downloads
|
vkd3d-proton: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vkd3d-proton && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vkd3d-proton && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib/wine/vkd3d-proton/ && \
|
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton/ && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib64/wine/vkd3d-proton/
|
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton/
|
||||||
|
|
||||||
lsteamclient: | vagrant_share/lsteamclient/lib/wine
|
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib/wine
|
||||||
lsteamclient: | vagrant_share/lsteamclient/lib64/wine
|
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib64/wine
|
||||||
lsteamclient: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
lsteamclient: downloads
|
lsteamclient: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) lsteamclient && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) lsteamclient && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib/wine && \
|
cp -f $(BUILD_DIR)/dist/dist/lib/wine/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib/wine && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib64/wine
|
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib64/wine
|
||||||
|
|
||||||
vrclient: | vagrant_share/vrclient/lib/wine
|
vrclient: | $(BUILD_ROOT)/vrclient/lib/wine
|
||||||
vrclient: | vagrant_share/vrclient/lib64/wine
|
vrclient: | $(BUILD_ROOT)/vrclient/lib64/wine
|
||||||
vrclient: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
vrclient: downloads
|
vrclient: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vrclient && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vrclient && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vrclient.dll.so /vagrant/vrclient/lib/wine && \
|
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vrclient.dll.so $(BUILD_ROOT)/vrclient/lib/wine && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vrclient_x64.dll.so /vagrant/vrclient/lib64/wine
|
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vrclient_x64.dll.so $(BUILD_ROOT)/vrclient/lib64/wine
|
||||||
|
|
||||||
wineopenxr: | vagrant_share/wineopenxr/lib/wine
|
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib/wine
|
||||||
wineopenxr: | vagrant_share/wineopenxr/lib64/wine
|
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine
|
||||||
wineopenxr: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
wineopenxr: downloads
|
wineopenxr: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) wineopenxr && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) wineopenxr && \
|
||||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/wineopenxr.dll.so /vagrant/wineopenxr/lib64/wine
|
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/wineopenxr.dll.so $(BUILD_ROOT)/wineopenxr/lib64/wine
|
||||||
|
|
||||||
battleye: | vagrant_share/battleye/v1/lib/wine
|
battleye: | $(BUILD_ROOT)/battleye/v1/lib/wine
|
||||||
battleye: | vagrant_share/battleye/v1/lib64/wine
|
battleye: | $(BUILD_ROOT)/battleye/v1/lib64/wine
|
||||||
battleye: private SHELL := $(VAGRANT_SHELL)
|
|
||||||
battleye: downloads
|
battleye: downloads
|
||||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) battleye && \
|
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) battleye && \
|
||||||
cp -f $(BUILD_DIR)/dist-battleye/v1/lib/wine/beclient.dll.so /vagrant/battleye/v1/lib/wine && \
|
cp -f $(BUILD_DIR)/dist-battleye/v1/lib/wine/beclient.dll.so $(BUILD_ROOT)/battleye/v1/lib/wine && \
|
||||||
cp -f $(BUILD_DIR)/dist-battleye/v1/lib64/wine/beclient_x64.dll.so /vagrant/battleye/v1/lib64/wine
|
cp -f $(BUILD_DIR)/dist-battleye/v1/lib64/wine/beclient_x64.dll.so $(BUILD_ROOT)/battleye/v1/lib64/wine
|
||||||
|
|
||||||
vagrant_share/%:
|
$(BUILD_ROOT)/%:
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
138
README.md
138
README.md
@ -46,23 +46,9 @@ Building Proton
|
|||||||
---------------
|
---------------
|
||||||
|
|
||||||
Most of Proton builds inside the Proton SDK container with very few
|
Most of Proton builds inside the Proton SDK container with very few
|
||||||
dependencies on the host side. For convenience we also provide
|
dependencies on the host side.
|
||||||
[Vagrant][vagrant] scripts that will create a VM with all the dependencies
|
|
||||||
and a working container runtime and build Proton inside it.
|
|
||||||
|
|
||||||
The direct container build is recommended for people building Proton on a
|
## Preparing the build environment
|
||||||
regular basis as it is faster and less resource hungry.
|
|
||||||
|
|
||||||
The Vagrant VM is easier to set up but comes with higher overhead, which
|
|
||||||
makes it more suitable for an occasional Proton build.
|
|
||||||
|
|
||||||
[vagrant]: https://www.vagrantup.com/
|
|
||||||
|
|
||||||
|
|
||||||
Building with Podman or Docker
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
### Preparing the build environment
|
|
||||||
|
|
||||||
You need either a Docker or a Podman setup. We highly recommend [the rootless
|
You need either a Docker or a Podman setup. We highly recommend [the rootless
|
||||||
Podman setup][rootless-podman]. Please refer to your distribution's
|
Podman setup][rootless-podman]. Please refer to your distribution's
|
||||||
@ -77,6 +63,33 @@ documentation for setup instructions (e.g. Arch [Podman][arch-podman] /
|
|||||||
[debian-docker]: https://wiki.debian.org/Docker
|
[debian-docker]: https://wiki.debian.org/Docker
|
||||||
|
|
||||||
|
|
||||||
|
## The Easy Way
|
||||||
|
|
||||||
|
We provide a top-level Makefile which will execute most of the build commands
|
||||||
|
for you.
|
||||||
|
|
||||||
|
After checking out the repository and updating its submodules, assuming that
|
||||||
|
you have a working Docker or Podman setup, you can build and install Proton
|
||||||
|
with a simple:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
If your build system is missing dependencies, it will fail quickly with a clear
|
||||||
|
error message.
|
||||||
|
|
||||||
|
After the build finishes, you may need to restart the Steam client to see the
|
||||||
|
new Proton tool. The tool's name in the Steam client will be based on the
|
||||||
|
currently checked out branch of Proton. You can override this name using the
|
||||||
|
`build_name` variable.
|
||||||
|
|
||||||
|
See `make help` for other build targets and options.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Manual building
|
||||||
|
|
||||||
### Configuring the build
|
### Configuring the build
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -137,97 +150,6 @@ is only useful after building Proton.
|
|||||||
`make dxvk` / `make vkd3d-proton` - rebuild DXVK / vkd3d-proton.
|
`make dxvk` / `make vkd3d-proton` - rebuild DXVK / vkd3d-proton.
|
||||||
|
|
||||||
|
|
||||||
Building using Vagrant
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
This section describes how to use a virtual machine to build proton.
|
|
||||||
|
|
||||||
### Preparing the build environment
|
|
||||||
|
|
||||||
The VM is managed with [Vagrant][vagrant], which you will need to install and
|
|
||||||
configure before invoking these commands. Proton's build system is most well
|
|
||||||
tested with Vagrant's VirtualBox and libvirt/qemu backends. It also requires
|
|
||||||
the vagrant-sshfs plugin. You may run into problems with the shared folder
|
|
||||||
(`vagrant_share`) and/or CPU and memory usage with other backends.
|
|
||||||
|
|
||||||
[vagrant]: https://www.vagrantup.com/
|
|
||||||
|
|
||||||
|
|
||||||
### The Easy Way
|
|
||||||
|
|
||||||
We provide a top-level Makefile which will execute most of the build commands
|
|
||||||
for you.
|
|
||||||
|
|
||||||
After checking out the repository and updating its submodules, assuming that
|
|
||||||
you have working Vagrant setup, you can build and install Proton with a
|
|
||||||
simple:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make install
|
|
||||||
```
|
|
||||||
|
|
||||||
You may need to restart the Steam client to see the new Proton tool. The
|
|
||||||
tool's name in the Steam client will be based on the currently checked out
|
|
||||||
branch of Proton. You can override this name using the `build_name` variable.
|
|
||||||
|
|
||||||
See `make help` for other build targets and options.
|
|
||||||
|
|
||||||
If your build VM gets cluttered, or falls out of date, you can use `vagrant
|
|
||||||
destroy` to wipe the VM clean, then invoke one of the below commands to start
|
|
||||||
over.
|
|
||||||
|
|
||||||
|
|
||||||
### The Detailed Way
|
|
||||||
|
|
||||||
Proton provides a Vagrantfile, which will automatically set up the Debian VM
|
|
||||||
for you. After installing Vagrant, initialize the VM by running from within
|
|
||||||
the Proton directory:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vagrant up
|
|
||||||
```
|
|
||||||
|
|
||||||
It will take a long time to download the base image and install all the build
|
|
||||||
dependencies. Eventually it will complete. You can SSH into the virtual
|
|
||||||
machine with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vagrant ssh
|
|
||||||
```
|
|
||||||
|
|
||||||
**You are now inside a virtual machine with a working Docker setup.** At this
|
|
||||||
point you will need to configure and make the build, see [building with
|
|
||||||
podman or docker](#building-with-podman-or-docker) section for details.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir build/
|
|
||||||
cd build
|
|
||||||
../proton/configure.sh --build-name=my_build
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
The Vagrantfile is set up to rsync the `proton` directory into the VM on
|
|
||||||
boot. On the host machine, you can use `vagrant rsync-auto` to have Vagrant
|
|
||||||
automatically sync changes on your host machine into the build machine. It is
|
|
||||||
recommended that you make changes on your host machine, and then perform the
|
|
||||||
build in the VM. Any changes you make in the `proton` directory on the VM may
|
|
||||||
be overwritten by later rsync updates from the host machine.
|
|
||||||
|
|
||||||
The Vagrantfile also creates a directory called `vagrant_share/` in the
|
|
||||||
`proton/` directory of your host machine, which is mounted at `/vagrant`
|
|
||||||
within the VM. You can use this shared folder to move your Proton build out
|
|
||||||
of the VM, or as one way to copy files into the VM.
|
|
||||||
|
|
||||||
When you are done with the VM, you can shut it down from the host machine:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vagrant halt
|
|
||||||
```
|
|
||||||
|
|
||||||
Please read the Vagrant documentation for more information about how to use
|
|
||||||
Vagrant VMs.
|
|
||||||
|
|
||||||
|
|
||||||
Install Proton locally
|
Install Proton locally
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
@ -244,7 +166,7 @@ The `make install` target will perform this task for you, installing the
|
|||||||
Proton build into the Steam folder for the current user. You will have to
|
Proton build into the Steam folder for the current user. You will have to
|
||||||
restart the Steam client for it to pick up on a new tool.
|
restart the Steam client for it to pick up on a new tool.
|
||||||
|
|
||||||
A correct local tool installation should look like this:
|
A correct local tool installation should look similar to this:
|
||||||
|
|
||||||
```
|
```
|
||||||
compatibilitytools.d/my_proton/
|
compatibilitytools.d/my_proton/
|
||||||
|
104
Vagrantfile
vendored
104
Vagrantfile
vendored
@ -1,104 +0,0 @@
|
|||||||
# -*- mode: ruby -*-
|
|
||||||
# vi: set ft=ruby :
|
|
||||||
|
|
||||||
Vagrant.require_version ">= 2.2.0"
|
|
||||||
|
|
||||||
module OS
|
|
||||||
def OS.windows?
|
|
||||||
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def OS.mac?
|
|
||||||
(/darwin/ =~ RUBY_PLATFORM) != nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def OS.unix?
|
|
||||||
!OS.windows?
|
|
||||||
end
|
|
||||||
|
|
||||||
def OS.linux?
|
|
||||||
OS.unix? and not OS.mac?
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Vagrant file for setting up a build environment for Proton.
|
|
||||||
if OS.linux?
|
|
||||||
cpus = `nproc`.to_i
|
|
||||||
# meminfo shows KB and we need to convert to MB
|
|
||||||
memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
|
|
||||||
elsif OS.mac?
|
|
||||||
cpus = `sysctl -n hw.physicalcpu`.to_i
|
|
||||||
# sysctl shows bytes and we need to convert to MB
|
|
||||||
memory = `sysctl hw.memsize | sed -e 's/hw.memsize: //'`.to_i / 1024 / 1024 / 2
|
|
||||||
else
|
|
||||||
cpus = 1
|
|
||||||
memory = 1024
|
|
||||||
puts "Vagrant launched from unsupported platform."
|
|
||||||
end
|
|
||||||
memory = [memory, 4096].max
|
|
||||||
puts "Platform: " + cpus.to_s + " CPUs, " + memory.to_s + " MB memory"
|
|
||||||
|
|
||||||
Vagrant.configure(2) do |config|
|
|
||||||
#libvirt doesn't have a decent synced folder, so we have to use vagrant-sshfs.
|
|
||||||
#This is not needed for virtualbox, but I couldn't find a way to use a
|
|
||||||
#different synced folder type per provider, so we always use it.
|
|
||||||
config.vagrant.plugins = "vagrant-sshfs"
|
|
||||||
|
|
||||||
config.vm.provider "virtualbox" do |v|
|
|
||||||
v.cpus = [cpus, 32].min # virtualbox limit is 32 cpus
|
|
||||||
v.memory = memory
|
|
||||||
end
|
|
||||||
|
|
||||||
config.vm.provider "libvirt" do |v|
|
|
||||||
v.cpus = cpus
|
|
||||||
v.memory = memory
|
|
||||||
v.random_hostname = true
|
|
||||||
v.default_prefix = ENV['USER'].to_s.dup.concat('_').concat(File.basename(Dir.pwd))
|
|
||||||
end
|
|
||||||
|
|
||||||
#debian10-based build VM
|
|
||||||
config.vm.define "debian10", primary: true do |debian10|
|
|
||||||
|
|
||||||
debian10.vm.box = "generic/debian10"
|
|
||||||
|
|
||||||
debian10.vm.synced_folder "./vagrant_share/", "/vagrant/", create: true, type: "sshfs", sshfs_opts_append: "-o cache=no"
|
|
||||||
debian10.vm.synced_folder ".", "/home/vagrant/proton", id: "proton", type: "rsync", rsync__exclude: ["vagrant_share"]
|
|
||||||
|
|
||||||
debian10.vm.provision "shell", privileged: "true", inline: <<-SHELL
|
|
||||||
set -e
|
|
||||||
#install docker and steam-runtime dependencies
|
|
||||||
dpkg --add-architecture i386
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
|
|
||||||
|
|
||||||
#add docker repo
|
|
||||||
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
|
|
||||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"
|
|
||||||
|
|
||||||
#install host build-time dependencies
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y ccache texinfo gpgv2 gnupg2 git docker-ce docker-ce-cli containerd.io \
|
|
||||||
fontforge-nox python-debian uuid-dev python3-pip
|
|
||||||
|
|
||||||
# https://github.blog/2021-09-01-improving-git-protocol-security-github/
|
|
||||||
git config --global url.https://github.com/.insteadOf git://github.com/
|
|
||||||
|
|
||||||
#install adobe font devkit to build source san hans
|
|
||||||
pip3 install afdko
|
|
||||||
|
|
||||||
#allow vagrant user to run docker
|
|
||||||
adduser vagrant docker
|
|
||||||
|
|
||||||
# use faster overlay2 docker driver
|
|
||||||
echo '{"storage-driver": "overlay2"}' >/etc/docker/daemon.json
|
|
||||||
|
|
||||||
#allow user to run stuff in steamrt
|
|
||||||
sysctl kernel.unprivileged_userns_clone=1
|
|
||||||
mkdir -p /etc/sysctl.d/
|
|
||||||
echo kernel.unprivileged_userns_clone=1 > /etc/sysctl.d/docker_user.conf
|
|
||||||
|
|
||||||
#ensure we use only the mingw-w64 that we built
|
|
||||||
apt-get remove -y '*mingw-w64*'
|
|
||||||
SHELL
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,100 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#this script resizes the build VM disk image. the generic/debian9 box that we
|
|
||||||
#use only ships a 32G disk, which is only just large enough to hold the Steam
|
|
||||||
#runtime, two Wine build trees, and final Proton dist/ folder.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
NOTE_STYLE="\e[31m\e[1m"
|
|
||||||
RESET_STYLE="\e[0m"
|
|
||||||
|
|
||||||
NEW_LIBVIRT_DISK_SIZE=128G
|
|
||||||
|
|
||||||
function note {
|
|
||||||
echo -e "$NOTE_STYLE""$1""$RESET_STYLE"
|
|
||||||
}
|
|
||||||
|
|
||||||
function usage {
|
|
||||||
note "To automatically resize a libvirt disk to $NEW_LIBVIRT_DISK_SIZE:"
|
|
||||||
echo ""
|
|
||||||
echo -e "\t$0 --libvirt-disk <libvirt disk path>"
|
|
||||||
echo ""
|
|
||||||
note "You may find the disk path with \"virsh vol-list default\"."
|
|
||||||
echo ""
|
|
||||||
note "Or, if you've already manually resized the disk (e.g. VirtualBox users):"
|
|
||||||
echo ""
|
|
||||||
echo -e "\t$0 --resize-vm-partition"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
#to be run from within the VM
|
|
||||||
if [ "$1" == "--fdisk" ]; then
|
|
||||||
sudo sfdisk -d /dev/sda > /tmp/sda.sfdisk
|
|
||||||
|
|
||||||
#remove start and size params from sda3 line, sfdisk will automatically use the rest of the disk
|
|
||||||
sed -e "s/^.dev.sda3.*$/\/dev\/sda3 : type=83/" < /tmp/sda.sfdisk | sudo sfdisk --force /dev/sda
|
|
||||||
|
|
||||||
exit
|
|
||||||
|
|
||||||
#to be run from within the VM
|
|
||||||
elif [ "$1" == "--resize2fs" ]; then
|
|
||||||
#resize2fs automatically uses the whole partition
|
|
||||||
sudo resize2fs /dev/sda3
|
|
||||||
|
|
||||||
exit
|
|
||||||
|
|
||||||
#libvirt disk image to resize
|
|
||||||
elif [ "$1" == "--libvirt-disk" ]; then
|
|
||||||
if [ -z "$2" ]; then
|
|
||||||
note "You must give a disk path to --libvirt-disk"
|
|
||||||
echo ""
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
LIBVIRT_DISK_PATH="$2"
|
|
||||||
|
|
||||||
note "Going to resize disk $LIBVIRT_DISK_PATH"
|
|
||||||
note "Shutting down VM"
|
|
||||||
vagrant halt
|
|
||||||
|
|
||||||
note "Resizing the VM disk image"
|
|
||||||
virsh vol-resize "$LIBVIRT_DISK_PATH" "$NEW_LIBVIRT_DISK_SIZE" --pool default
|
|
||||||
|
|
||||||
#just resize the partition in the VM
|
|
||||||
elif [ "$1" == "--resize-vm-partition" ]; then
|
|
||||||
: #noop
|
|
||||||
|
|
||||||
else
|
|
||||||
if [ -n "$1" -a "$1" != "--help" -a "$1" != "-h" ]; then
|
|
||||||
note "Unknown argument: $1"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
note "Starting the VM"
|
|
||||||
vagrant up
|
|
||||||
vagrant rsync
|
|
||||||
|
|
||||||
note "Repartitioning the disk"
|
|
||||||
vagrant ssh -c "/home/vagrant/proton/resize-vagrant-disk.sh --fdisk"
|
|
||||||
|
|
||||||
note "Restarting the VM"
|
|
||||||
#seems to be necessary for resize2fs to pick up on the new partition size
|
|
||||||
#maybe there's a way to do that without rebooting?
|
|
||||||
vagrant halt
|
|
||||||
vagrant up
|
|
||||||
|
|
||||||
note "Resizing the filesystem"
|
|
||||||
vagrant ssh -c "/home/vagrant/proton/resize-vagrant-disk.sh --resize2fs"
|
|
||||||
|
|
||||||
note "Here's the output from \"df -h /dev/sda3\":"
|
|
||||||
vagrant ssh -c "df -h /dev/sda3"
|
|
||||||
|
|
||||||
note "Shutting down the VM"
|
|
||||||
#just to be sure everything is in a clean state
|
|
||||||
vagrant halt
|
|
||||||
|
|
||||||
note "Done!"
|
|
Loading…
x
Reference in New Issue
Block a user