Striping is trivial, getting the debug symbols if premake just strips
them silently is a pain tho.
Stripping should optionally be done during install, as we don't have an
install target nor an install-strip target, make it a configure option
which is off by default.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
After 8d993b9250 the generated test_root.cpp is no longer in the source
tree but generated in workspace. The issue of there bing no source is
still valid, so update the path.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
The new patch-release pipeline takes a git branch originating from a
release tag, applies the changes since the tag onto the nightly build of
the release, and rebuilds the Windows binary.
All resulting changes are sent to the bundling pipeline which builds for
macOS and creates the tarballs and installers.
There will be two instances of the bundles pipeline: the main one will
keep tracking the main branch and providing biweekly bundles of the next
release, while a new patched-bundles pipeline will be manually used to
generate patch releases.
New files in the repository are naively added using `svn add --force`
which adds all unversioned files according to the documentation.
However, this iterates through the entire repository and takes about 12
minutes. Using `svn status` and parsing through the results only takes a
couple seconds.
The call to `svn delete` on deleted files does not work if filenames
contain spaces. This happens in particular when we fix spaces in
filenames, as the pipeline doesn't understand file renames.
This allows the compiler to skip stack guards on some functions, leading to better performance at limited security expanse.
Examples of such functions include isqrt64 and ComponentManager::PostMessage.
This replaces the previous arclint linter for checking the copyright
year in license headers with a gitea workflow job.
As the date of last edit might differ from commit date due to reverts
the copyright linter is run against a base commit.
The python script doing the heavy lifting is written by @Dunedan.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Co-Authored-by: Dunedan <dunedan@phoenitydawn.de>
If running premake fails during update workspace then update workspace
needs to exit with an error as well so the CI will actually report an
error.
According to Itms testing with powershell passing the original error is
unreliable, so just exit with one.
Fixes: #7642
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Add a workflow for linting and add a cppcheck job.
The job is using cppcheck provided by package manager. Existing errors
are suppressed to get going with CI linting, ideally tho the suppression
list would be empty. Some of the suppressed errors are only found with
more recent cppcheck than what is available in the runner.
Also remove old arclint cppcheck setup.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Use the single Debian 12 container image and inject CC, CXX and LDFLAGS
instead.
Further do the lfs checkout on the agent instead of inside the container
avoiding full rebuilds due to version mismatch.
Then split the debug and release builds using separate workspaces and
record warnings by build preventing gcc warnings leaking into clang
warnings.
Based on zero warning policy and incremental builds using a reference
build doesn't make sense. Removing that we can also drop an additional
generic workspace.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Debian 12 (bookworm) will soon be oldstable.
Most importantly this version comes with cmake-3.25, which will allow us
to use SDL3, cpp-httplib, fcollada fork and possibly others in the
future.
This also comes with gcc-12 and clang-14 by default, both implementing
almost all of c++17 and most of c++20.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Don't hardcode the number of parallel jobs in Windows based pipelines
but allow setting the desired number in the environment.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Allow the number of concurrent build jobs in Unix build pipelines be
specified in the environment via the JOBS variable.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
The Linux agent now runs Docker in rootless mode for additional
security. Operations inside containers must be run as root to match the
underprivileged user running Docker.
If you run as root then created files will be owned by root, this is
expected behaviour and not messing with permissions as stated in the
error message.
Running in a container the root user may map to the user starting the
container while all other users would need mapping to be able to work
with a bind mounted a checkout.
Further Debian patches out the root check to be able to build on their
builder.
Given the above remove the check.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Premake v5.0.0-beta4 replaces the LinkTimeOptimization flag with a
function linktimeoptimization, use it if available to avoid deprecation
warning.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
- OARS content rating have been updated to version 1.1
- Touch Screens, Keyboard, Mouse have been marked as supported
- Laptop screens and bigger are marked as required to the minimum width of 1024 required by the game
- Fixes the device compatibility page on GNOME Software.
- added a "0AD" keyword to fix an issue with Flathub search feature where searching for "0AD" instead of "0 A.D." returns no results.
This avoids collisions in the user report, fixes#7174.
Update the user report version to account for the new build version
format, fixes#7173.
The build version displayed in the GUI is kept at 5 characters for
main menu clutter concerns.
Adding a category to newoption calls groups our options together instead
of mixing them with premake General options in --help output.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
The option --atlas is oddly different than any other feature flag,
change it to be in line with the others and enable it by default. The
new option is --without-atlas.
As the WX binaries aren't precompiled for Windows automagically disable
atlas there for users running the batchfile through filemanger if WX is
missing.
On *nix not providing a valid wx-config whith enabled atlas is
considered an error.
Fixes: #6401
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
After the git migration update-workspace.sh doesn't build libraries
anymore. Remove variables and options no longer of use.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Markdown linter requires a heading and the heading not ending in a dot,
make the readmes not trigger a violation.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
This replaces all links pointing to trac with their corresponding links
to gitea. Also replace http with https while at it.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Since 7d6a0c695a we use gmake2 instead of gmake, add a check in case
someone calls premake without the wrapper script update-workspace
telling them to use gmake2 instead as support for gmake was removed.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>