Commit Graph

135 Commits

Author SHA1 Message Date
Loïc Guilloux 0afa6f2424
Codechange: [CMake] Auto-fill list of #include in script_window.hpp (#10103) 2022-10-24 12:35:58 +02:00
Bouke Haarsma 887b760c88
Change: Strip symbols from bundles except macOS (#10072) 2022-10-10 13:42:54 +01:00
Bouke Haarsma d0dcb6547e
Change: Don't strip symbols from bundles (#10071) 2022-10-07 12:56:45 +02:00
Peter Nelson 2cdd8b7429 Change: Separate fontcache implementations. 2022-09-25 18:34:24 +01:00
Loïc Guilloux 57717a20d3
Fix #9966: workaround a VS2022 optimisation bug (#10029) 2022-09-13 12:27:49 +02:00
glx22 906613e83a Change: [CMake] Disable newgrf scan for regression check 2022-05-27 19:57:50 +02:00
Loïc Guilloux 7331149dde
Codechange: [CMake] Pass API files list via a file to minimise command line length (#9874) 2022-05-01 00:39:59 +02:00
Nik Nyby 44713a68ed
Add: [CMake] support rpm for fedora and rhel (#9861) 2022-04-19 02:11:42 +02:00
Nik Nyby 6204020b6a
Fix: CMake error message grammar (#9860) 2022-04-19 01:33:29 +02:00
Loïc Guilloux c85557e553
Fix: [MinGW] Disable ASLR for x64 Debug builds (#9773) 2021-12-28 21:08:09 +01:00
Patric Stout eca73a810c Change: rebrand 1.12.0 to 12.0
One question that keeps popping up: "when do we release 2.0?".
NewGRF will force that at least 1.16 will be 2.0, but to not wait
for this, let's drop the "1." and be for ever done with that
conversation.

We are following in the footstep of giants here.
2021-08-15 12:28:51 +02:00
Michael Lutz 10d8c17236 Codechange: Add CMake source group for the saveload compat tables.
While at it, fix the not-working OpenGL sub-group.
2021-07-04 16:31:59 +02:00
Rubidium 3237e97b35 Cleanup: [Script] Use nullptr instead of 0 or NULL 2021-06-17 16:18:30 +02:00
Loïc Guilloux 076f3d26c2
Fix #9329: [CMake] FindVersion.cmake relied on internal cmake variable (#9330) 2021-06-10 22:14:08 +02:00
Owen Rudge 3ce7e31f64 Feature: Sign Windows builds 2021-05-26 13:40:44 +01:00
milek7 36bcd2956a Fix: Building on Haiku 2021-05-24 08:56:18 +02:00
Loïc Guilloux c0a0d85d20
Fix: [Actions] Annotations not shown for MSVC (#9247) 2021-05-11 21:43:43 +02:00
glx22 aca20092aa Fix: [CMake] Check nforenum and grfcodec return value 2021-04-24 21:16:06 +02:00
glx22 e62ecbff16 Fix: [CMake] Incorrect dependency checks for GRF 2021-04-24 21:16:06 +02:00
Loïc Guilloux d4f0b6f434
Fix: [CMake] Auto-fill version details in rev.cpp and ottres.rc (#9066) 2021-04-20 21:38:46 +02:00
Loïc Guilloux 8395c6532e
Fix 799eb31: [CMake] Don't include regression AIs in bundles (#9068) 2021-04-20 18:46:15 +02:00
Loïc Guilloux f306d65ea3
Fix: [CMake] Use the right run-time library depending on vcpkg triplet (#8964) 2021-04-07 12:43:17 +02:00
Loïc Guilloux 799eb31ff1
Change: [CMake] Copy AI/GS compatibility files to build dir (#8906) 2021-04-02 10:15:45 +02:00
Patric Stout 501087058e Fix: [CMake] if the regex for STABLETAG is empty, it means it is stable
This feels a bit inside out, but it makes sense: if there are no
"beta1" or "RC1" mentions, it means it is a stable release.
2021-04-01 13:26:34 +02:00
glx22 35a228f78f Add: [CMake] Install menu and media files 2021-03-09 22:42:25 +01:00
glx22 b5770acd50 Codechange: [CMake] Add checks for baseset script parameters 2021-03-09 22:42:25 +01:00
glx22 349dc568ea Fix: [CMake] Remove timestamps from regression output 2021-03-04 16:22:58 +01:00
glx22 b67245d71e Fix: [CMake] CMake may use || at the end of custom commands 2021-02-22 23:17:45 +01:00
glx22 ec9d1a6b8f Fix: [CMake] CMAKE_SOURCE_DIR may contain regex commands 2021-02-22 23:17:45 +01:00
Michael Lutz 9a069faa01 Codechange: [Win32] Try to get an OpenGL 3.2+ context if possible. 2021-02-22 22:16:07 +01:00
Owen Rudge 395e015282 Change: Convert .md to .rtf for Windows/Mac packages 2021-02-08 23:23:24 +00:00
glx22 2cbfcd2327 Change: [CMake] Bump minimum version to 3.9 2021-02-07 16:21:13 +01:00
Patric Stout 9322b40df1
Fix: [CMake] our allegro drivers use v4, so skip v5 if found (#8653)
On some distros allegro v5 is called allegro-5, but on some others
it is not. So this should fix for all distros that allegro v5 is
not being picked up, and only v4 is.
2021-02-07 12:54:02 +01:00
glx22 99448eedca Fix: [CMake] os/windows/openttd.manifest is not a generated file 2021-02-05 23:41:55 +01:00
Patric Stout 05df7996a4
Feature: [Actions / CMake] support for generic linux builds (#8641)
These bundles can be opened on any "modern" Linux machine with
a driver that SDL2 supports.

Machines needs at least glibc 2.15, which was released 10 years ago.
It is build with CentOS 7 as base, and only assumes the following
libraries are available on the system:
- libc
- libdl
- libgcc_s
- libpthread
- librt
- libstdc++

All other libraries the game depends on are bundled together with
the game, so users don't need any library installed to use this
bundle. The downside of course is that this increases the binary
size a bit: 30 MiB of libraries are in this bundle.

RPATH is used to make ld-linux find the folder libraries are
stored in; however, system libraries are always used before these,
in the assumption libraries on the user system are more up-to-date.

Using -DOPTION_PACKAGE_DEPENDENCIES=ON switches on packaging
of libraries in the "lib" folder. This requires CMake 3.16 to
be installed; otherwise it will fail.
2021-02-05 12:31:27 +01:00
Owen Rudge a2bd0a14e1 Feature: [Actions] ARM64 builds for Windows 2021-01-18 08:57:58 +00:00
Owen Rudge 2d9e164ec4 Fix: [Actions] Give Universal Mac packages the "universal" suffix 2021-01-18 08:57:39 +00:00
Owen Rudge 0a129bc810 Change: Label Mac builds as "macos" instead of "macosx" 2021-01-16 10:04:51 +00:00
glx22 97d554feb1 Codechange: On regression failure, output the result in a file 2021-01-09 23:48:09 +01:00
Owen Rudge bbc96fd37c Fix: Don't add -mno-sse4 on arm64 2021-01-08 16:58:14 +00:00
Michael Lutz 21a45168bd Codechange: [OSX] CMake source group for OSX files.
This separates the OSX specific files into a proper folder when generating
Xcode project files.
2021-01-03 13:25:32 +01:00
Charles Pigott 10090d0ac6 Add: [CMake] Explicitly support txz for Arch Linux 2021-01-02 19:47:14 +00:00
Charles Pigott 3dfee979a7 Codechange: Drop libxdg-basedir dependency in favour of finding the directories ourselves 2021-01-02 19:46:08 +00:00
Michael Lutz 5b1fb94240 Codechange: [OSX] Prevent the compiler from using SSE4 instructions unless we want to.
This improves compatibility on older systems. We don't need to disable anything
older, as there are no SSE2-only Macs.
2021-01-02 01:26:26 +01:00
Patric Stout 0c3ddc5436
Fix: support non-ubuntu/debian Linux variants with LSB support (#8408)
This now generates a warning, as we would still like people to
make a Pull Request to support the target. But it does continue
with packing to a txz.
2020-12-21 21:32:29 +01:00
Patric Stout 2df182748c Fix: [CMake] automatically detect dependencies for .deb packages 2020-12-19 18:26:29 +01:00
Patric Stout 6228dde3da Fix: [bundle] postfix the distribution for Linux bundles 2020-12-19 18:26:29 +01:00
Patric Stout b8217610ce Fix: [bundle] postfix the architecture for Mac OS bundles
This in preparation for other architectures, like arm64.
2020-12-19 18:26:29 +01:00
Patric Stout 7cdf7c7ca0 Fix: [bundle] custom launch.sh is no longer required for Mac OS
Co-authored-by: Owen Rudge <owen@owenrudge.net>
2020-12-19 18:26:29 +01:00
Patric Stout d15dc9f40f Add: support for emscripten (play-OpenTTD-in-the-browser)
Emscripten compiles to WASM, which can be loaded via
HTML / JavaScript. This allows you to play OpenTTD inside a
browser.

Co-authored-by: milek7 <me@milek7.pl>
2020-12-15 15:46:39 +01:00
Owen Rudge b14e3b9b9d Feature: Switch to bzip2 compression for DMG files (supported by OS X 10.4+) 2020-12-13 23:58:37 +01:00
glx22 d1fa6b129c Add: [CMake] Option to only build tools/docs 2020-12-13 22:46:46 +01:00
Michael Lutz a660dce295 Fix: [CMake, MSVC] Don't copy regression exe's into a subfolder as they need have their lang files next to them. 2020-12-13 22:45:50 +01:00
glx22 6fae0b83d9 Add: [CMake] targets to generate documentation 2020-12-12 15:48:04 +01:00
glx22 a06fe8e8a7 Fix: [CMake] cross-compiling requires native tools 2020-12-04 09:49:31 +00:00
Charles Pigott 0a9aed0522 Fix: [CMake] Don't detect XAudio2 if defines are missing 2020-11-26 19:06:03 +00:00
Jelle van der Waa b6615b2cd4 Fix: make reproducible by not embedding timestamps
By default gzip embeds a timestamps which makes building it twice
not reproducible, passing -n skips this embedding behaviour.

Motivation: https://reproducible-builds.org
2020-10-15 22:01:12 +01:00
Charles Pigott a0307652f3 Fix: Work around cmake bug by stripping link target strings 2020-10-03 16:17:11 +01:00
Charles Pigott 348c231e12 Codechange: Make codestyle for CMake files consistent for 'control' statements 2020-09-25 14:43:13 +01:00
laikh 6358ae47de Fix: Remove /MP flag and improve FindEditbin.cmake for Windows clang-cl build 2020-09-01 09:45:48 +01:00
Michael Lutz 7d66540af5 Fix: [CMake] Don't strip final newline from regression output.
The expected regression output files all end with a newline. As such, we have to make sure we capture the output from OpenTTD with the last newline intact.
2020-07-27 17:26:19 +01:00
glx 4079c47b6c Change: rewrote squirrel_export in CMake 2020-07-16 00:53:26 +02:00
glx 8794c61f25 Change: rewrote generate_widget in CMake 2020-07-16 00:53:26 +02:00
Michael Lutz 00eccbe298 Add: [CMake] Source group definitions to create file filters in generated project files (like the old MSVC projects). 2020-07-10 19:33:00 +02:00
Michael Lutz de4dc792a9 Fix: [CMake] Re-enable multi-threaded compilation for MSVC project files. 2020-07-05 21:11:09 +02:00
glx22 97592c4093 Add: [CMake] Allow renaming of openttd binary 2020-07-02 21:18:14 +02:00
glx22 53de5b5c55 Fix: [CMake] Restore man file compression 2020-07-02 21:18:14 +02:00
Dan Villiom Podlaski Christiansen e6be8be19d Fix: remove remainining usages of FALSE in CMake files 2020-06-30 09:43:00 +01:00
Dan Villiom Podlaski Christiansen 70905ee82e Fix: fix building release tags
I tried building a tag, and got this error:

CMake Error at cmake/scripts/FindVersion.cmake:85 (string):
  string sub-command REGEX, mode REPLACE: regex "^[0-9.]*$" matched an empty
  string.
2020-06-30 09:43:00 +01:00
Dan Villiom Podlaski Christiansen 241e3adae8 Fix: use proper flags for suppressing warnings in Clang 2020-06-30 09:43:00 +01:00
Dan Villiom Podlaski Christiansen 0d46e20bd4 Add: add option for forcing coloured compiler output (useful for Ninja) 2020-06-30 09:43:00 +01:00
glx22 63d20c029b
Fix 887b912af: MinGW requires an extra link flag with _FORTIFY_SOURCE (#8246)
see #7860
2020-06-28 01:18:28 +02:00
Charles Pigott 887b912af1 Codechange: Only apply FORTIFY_SOURCE in non-debug builds
It requires -O1 (or greater) and GCC spews out warnings if you try using it with -O0
2020-06-27 14:51:14 +01:00
Dan Church 506598a80a Fix: [CMake] Fix install paths using GNUInstallDirs 2020-06-18 21:18:53 +01:00
glx22 8ef3d8f584 Revert f51e66f6: creating zip bundle fails for MacOS 2020-06-10 21:10:00 +02:00
glx22 0b86bd8b03 Fix: CMake option values should be ON/OFF 2020-06-08 09:49:26 +01:00
glx22 3d76677594 Fix: Generate windows installer only for stable releases 2020-06-08 09:49:26 +01:00
glx22 f51e66f697 Fix: Restore zip bundle for MacOS 2020-06-08 09:49:26 +01:00
glx b145ee310c Fix: MacOS bundle creation 2020-06-06 19:23:54 +02:00
glx 877d196ef5 Fix: Incorrect REV_YEAR, and parsing of .ottdrev 2020-06-05 22:32:07 +02:00
Patric Stout 4218ebc932 Fix: [AzurePipelines] switch the CI / CD to CMake too
This also means dropping Debian/jessie, as it has a CMake that is
too old (3.0), with no real path to upgrade.
2020-06-05 19:36:05 +02:00
Patric Stout b7643b1d36 Add: create bundles via CPack
CPack works closely together with CMake to do the right thing in
terms of bundling (called 'package'). This generates all the
packaging we need, and some more.
2020-06-05 19:36:05 +02:00
Patric Stout 56d54cf60e Add: introduce CMake for project management
CMake works on all our supported platforms, like MSVC, Mingw, GCC,
Clang, and many more. It allows for a single way of doing things,
so no longer we need shell scripts and vbs scripts to work on all
our supported platforms.

Additionally, CMake allows to generate project files for like MSVC,
KDevelop, etc.

This heavily reduces the lines of code we need to support multiple
platforms from a project perspective.

Addtiionally, this heavily improves our detection of libraries, etc.
2020-06-05 19:36:05 +02:00
Patric Stout 85315e2e31 Codechange: rework how grf and ob[msg] are generated
For grfs, it now uses CMake scripts to do its job, and both grf
files are split into their own folder to make more clear what is
going on. Additionally, it no longer builds in-source (although the
resulting grf is copied back in the source folder).

For ob[msg] it now uses CMake scripts to generate the translation
files; the result is no longer stored in-source (but in the build
folder).

Although all files are available to create the GRFs and basesets, it
won't really work till CMake is introduced (which will happen in a
few commits from here)
2020-06-05 19:36:05 +02:00
Patric Stout 203a77c1dc Codechange: move regression outside of bin and make it work via CMake script
The tst_stationlist savegame had to be changed to start the correct
AI. In the old setup, all regression AIs had the same name, which
made it impossible to run both regressions in parallel. With the new
setup this is possible.

Although all files are available to run the regression, it won't
really work till CMake is introduced (which will happen in a few
commits from here)
2020-06-05 19:36:05 +02:00