Commit Graph

37 Commits

Author SHA1 Message Date
Arkadiusz Hiler
692ef0aa1f build: Do as much as possible inside of the SDK container.
Parts of the rules, including the magical ones created via
make/rules-*.mk, are executed inside of the container via SHELL
override, and parts are executed on the host side.

This makes reasoning about and debugging the rules much harder than it
should be. It also requirs the users to have certain programs installed
on the host in addition to docker/podman.

With this change `make` will act as a simple pass through to inside of
the container for the most part.

One notable exception is installation which still happens the host side.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
e60f8c6aac build: Build all fonts in the container.
With the upgrade to sniper the fontforge is up to date enought to build
all our fonts.

Patch is used only to patch the fonts.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
b4bba7eec4 configure.sh: Move the default SDK build container image URI to Makefile.in.
Up until now ./configure.sh was baking in the default value into the
generated Makefile. Because of it if there was a change that requires a
newer version of the SDK the compilation would fail until the next
./configure.sh invocation does the update.

This is proved to be confusing - mysterious build errors without clear
explanation.

With this change the default value is a part of Makefile.in and if user
doesn't specify --proton-sdk-image it will be always used and always up
to date.

--proton-sdk-image overrides the default and stores it in the Makefile
just like it used to.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
28aeb63901 build: Switch over to sniper-based SDK container. 2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
bc63dbbf2a build: Get rid of runtime selection options.
Those were first added when we were working on using the new
pressure-vessel based runtime but have basically no use during current
development.
2023-02-14 16:07:44 +02:00
Rémi Bernon
db3274b1c7 build: Build PE modules with -mcmodel=small.
This breaks MinGW autoimport mechanism but nothing in Proton should be
using it. Instead, any PE module should be using standard dllimport and
ntdll will do the relocations as expected. We also don't and hopefully
never have modules larger than 2GB, so 32-bit %rip relative offsets
should be enough for everything.

This will OTOH save a lot of .refptr indirections, that are otherwise
generated for any extern symbols, even though they are later linked in
the same module, making all code smaller and maybe a little faster.
2023-02-14 16:07:44 +02:00
Arkadiusz Hiler
8959349ac9 configure.sh: Use SDK 0.20220601.0-1 2022-11-23 14:06:19 +02:00
Andrew Eikum
6acaf51d6e configure.sh: Use SDK 0.20220601.0-0 2022-08-03 13:40:46 +03:00
Arkadiusz Hiler
d2e7a76010 configure.sh: Update default Proton SDK image to 0.20220329.0-0 2022-06-03 14:26:11 +03:00
Arkadiusz Hiler
76406455ac Build most of the fonts in the container.
We can move everything but Liberation fonts build to the container.
Sadly those require newer version of fontforge than the one available in
the Steam RT.

There's some extra logic necessary to assure that font build triggers in
the container with the default/all targets.

This removes the requirement to have afdko and fonttools installed on
the host.
2022-04-05 18:13:11 +03:00
Arkadiusz Hiler
701dad161f configure.sh: Don't check for autoconf.
It's not required on the host since
44d9fb94b2 ("build: Run autoreconf in the container.")
2022-04-05 18:13:11 +03:00
Andrew Eikum
32e058dcbc Makefile.in: Build dav1d
CW-Bug-Id: #19516
2022-01-24 22:53:20 +02:00
Andrew Eikum
3bffbe24b3 build: Rename build/makefile_base.mak to Makefile.in 2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
f28e37b95c configure: Autodetect docker or podman 2022-01-19 11:29:54 +02:00
Rémi Bernon
c308ae9f32 configure.sh: Update default Proton SDK image to 0.20211207.0-0. 2022-01-19 11:29:54 +02:00
Arkadiusz Hiler
158e04cb05 configure: Mention that people may need to install afdko using pip. 2021-11-11 18:36:07 +02:00
Arkadiusz Hiler
b82289bd0d build: Add support for relabeling container volumes. 2021-08-12 08:53:50 -05:00
Arkadiusz Hiler
fc18afd71e configure.sh: Expose --enable-ccache.
Until now the option had to be added by hand to the Makefile or
specified each `make` invocation.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
c52532efce configure.sh: Detect rootless container setups.
Until now the option had to be added by hand to the Makefile or
specified each `make` invocation.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
82ae47758f configure.sh: Add option to select container engine.
Configure will also test the container engine by trying to run the
selected SDK image.

This may make the first configure a bit slow, as it downloads the image,
but after that the SDK will be cached locally.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
33814e973d configure.sh: Look for AFDKO.
Debian-like distributions install AFDKO's executables into libexec and
provide an `afdko` helper to call them.

Python's pip installs the executables in bin.

Let's support both.
2021-06-17 15:24:39 -05:00
Arkadiusz Hiler
f55d7adcb1 configure.sh: Check for host-side tools and warn if something is missing.
The checks don't exit immediately so users won't have to rerun configure
after installing only a single dependency.
2021-06-17 15:24:39 -05:00
Rémi Bernon
8448591ebd build: Build with Proton SDK 0.20210505.0-2.
But disable XPresent extension for now.
2021-06-17 15:10:20 -05:00
Rémi Bernon
0e897ff8b7
build: Move protonsdk_version default value to configure.sh. 2021-05-27 16:59:02 +02:00
Rémi Bernon
a8b3580679
configure: Rename --no-steam-runtime to --no-proton-sdk. 2021-05-27 16:58:19 +02:00
Rémi Bernon
9d5b7eb0cc
configure: Rename --steam-runtime-image to --proton-sdk-image. 2021-05-27 16:58:19 +02:00
Rémi Bernon
f417b5c3e3 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.
2021-02-05 08:28:09 -06:00
Rémi Bernon
dcf5f0f53c configure: Remove unused ffmpeg option. 2021-02-05 08:28:09 -06:00
Andrew Eikum
26e8db3d6f configure: Remove no longer needed steam-runtime argument 2020-09-29 14:29:06 -05:00
Andrew Eikum
030bdcd224 Simplify DXVK build 2019-07-03 08:11:05 -05:00
Andrew Eikum
d68e71bed6 Build wine with dxvk cross-compiler
WARNING: Do not look directly into the build system without eye
protection.
2019-07-03 08:11:05 -05:00
Andrew Eikum
5c5bfcc81e Build dxvk with a special cross-compiler
This mingw-w64 build is a more recent compiler and has dwarf2 exceptions
enabled.
2019-06-06 11:41:28 -05:00
Andrew Eikum
72499898a7 configure.sh: Fix no steam runtime argument 2019-02-18 14:16:44 -06:00
Andrew Eikum
0ecb100046 Run Wine in the steam runtime 2019-02-14 08:32:38 -06:00
Krish De Souza
416bea727e Shellcheck fixes for configure.sh and steamrt-bootstrap.sh
In steamrt-bootstrap,sh
  + Used quotes to prevent word splitting SC2046
  + Used $() notation rather than legacy backtick SC2006
  + which is non-standard. 'command -v' is builtin SC2230

In configure.sh
  + Assigned to local variable separately to avoid masking return values SC2155
  + Used to quote to prevent glob matching SC2053
  + Used -z command rather than ! -n SC2236
  + Fixed SC2129 which would have a minor performance gain of avoiding constantly opening and closing the makefile.
2018-11-16 12:54:56 -06:00
Andrew Eikum
f097693864 Update README for new build system 2018-10-12 08:30:18 -05:00
John Schoenick
1be8592535 makefile_base.mak: Implement makefile-based build system 2018-10-11 08:31:51 -05:00