1
0
forked from mirrors/0ad

89 Commits

Author SHA1 Message Date
Itms 9f6699d964 Adapt bundles pipeline to the git environment 2024-12-21 23:03:25 +01:00
Ralph Sennhauser 949d5f8c0b Check for WX in premake and rename atlas option
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>
2024-12-21 10:03:12 +01:00
Vladislav Belov c7ae248b77 Removes duplicated manifest for Windows. 2024-12-16 23:07:37 +01:00
Ralph Sennhauser b863e99388 Add check for use of gmake action
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>
2024-12-09 19:03:05 +01:00
Itms 0de5f2fb25 Upgrade SpiderMonkey to ESR 115 2024-12-09 10:46:12 +01:00
Itms cc72142205 Adapt 0 A.D. to SpiderMonkey ESR 102
This follows the migration guide at:
https://github.com/mozilla-spidermonkey/spidermonkey-embedding-examples

Based on patch by: wraitii
Differential Revision: https://code.wildfiregames.com/D5002
2024-12-09 10:43:35 +01:00
Itms d85a56142d Revert "Use -Og or equivalent for debug builds"
This reverts commit 81171f3bb4.

Backed out because of issue #7281.
2024-12-05 09:46:53 +01:00
Ralph Sennhauser 81171f3bb4 Use -Og or equivalent for debug builds
Unless minimal cflags is set add -Og or equivalent to CXXFLAGS for debug
build configuration.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-12-01 09:48:53 +01:00
Ralph Sennhauser b97f1233ad Limit FORTIFY_SOURCE to release builds
FORTIFY_SOURCE relies on optimizations being enabled which is only the
case for the release configuration. Therefore remove it from the debug
configuration as to prevent the compiler issuing a warning on each
invocation.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-12-01 09:48:53 +01:00
Ralph Sennhauser c497744548 Don't define DEBUG on non VS actions
DEBUG is unused by pyrogenesis and unconditionally adding it to defines
prevents building against a non debug version of spidermonkey. This will
allow building only one copy of spidermonkey, which can be trivially be
replaced with the other depending on needs independent of pyrogenesis
debug or release build.

This also allows to build either build configuration against system
spidermonkey, which obviously is either one build type or the other.
Requires a compilecheck until the pc file gets fixed upstream.

A comment in the spidermonkey build.sh says on FreeBSD spidermonkey
debug configuration doesn't even build and so pyrogenesis debug build
wasn't possible either.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-12-01 09:48:53 +01:00
Ralph Sennhauser a5fec576f9 Set default workspace instead of requiring outpath
This uses ./build/workspaces/default as location for generated build
files as well as build products. Using the name "default" to avoid the
dilemma gcc vs clang vs premake generator. Doesn't impact scripts
already using --outpath and allows running premake5 --help without a
wrapper.

Also update .gitignore to make using arbitrary workspaces cleaner.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-11-28 06:38:21 +01:00
Ralph Sennhauser cb08933e88 Remove --prefer-local-libs premake option
This option doesn't handle includes, further we rely on system includes
and pkg-config to locate dependencies.

For systems where installing into local is reasonable this paths should
already be in system/ld paths. So in practice this offers no value.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-11-28 06:34:38 +01:00
Ralph Sennhauser 197e63465b Always enable --large-address-aware build option
This option is needed to be able to use more than 2GB on 32bit Windows
builds.

Having to explicitly enable this turns out to be a pitfall. Release
builds are done with this option enabled and when then building from
source and running out of memory it's not immediately obvious what the
reason is.

The documented intent is that this behaviour might be useful to find
memory leaks. The large-address-aware enabled build already perfectly
serves this role this days and the memory pressure is an important
reason for the ongoing Windows 64bit build efforts. Also there are
arguably better tools for this purpose.

Refs: commit a8403bd7e5
Refs: issue #1619
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-11-26 18:27:38 +01:00
Ralph Sennhauser 0a455fbe2d Remove glooxwrapper
This wrapper was meant to support multiple C++ ABIs with a single
pre-built gloox library wrap as a C library. A new ABI change was
rejected a few years back, so this will probably take a while for it to
be on the table again. With the bug tracker and mailing list currently
unavailable and known TLS issues we might have replaced gloox by then
anyway.

Supporting multiple ABIs with the current setup isn't an issue either
and is already done for 32bit vs 64bit ABI on Windows.

Therefore use gloox types directly in lobby code instead of wrapper
types and delete the wrapper and build-integration.

Migrate to override where applicable, as it helped avoid subtle
differences in signatures and finding missing inheritance of LogHandler.

Finally use version check instead of os check to work around Windows
using the 1.1 development branch instead of releases.

Fixes: #7198
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-11-25 20:01:00 +01:00
Ralph Sennhauser 8d993b9250 Generate sources in workspace
Modify our cxxtest module so that it generates sources in the
configured build directory instead of the source tree. This simplifies
cleaning build output and .gitignore.

Make test_root.cpp a build target so it doesn't have to be generated on
each run. This means no more building and linking into test target
unless needed either. Unfortunately there is no source for test_root.cpp
and an update to cxxtest might require a manual make clean.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-11-13 19:16:33 +01:00
andy5995 80ac75749d Add --with-lto premake parameter
Co-authored by: Vladislav Belov <vladislavbelovdev@gmail.com>
Co-authored by: abian <wildfiregames@abian.casa>

Based on: https://code.wildfiregames.com/D4891
2024-11-11 20:01:26 +01:00
trompetin17 2daca3c81c Enables catching unhandled exceptions in test
If there any unhandle exception in any test code, the test app crash
instead of report and error in the test case.
2024-11-07 12:37:26 -05:00
Ralph Sennhauser 7d6a0c695a Use gmake2 premake action
The gmake action is long deprecated and subject for removal in the
future. Switch to gmake2.

A major benefit is gmake2 is much better at parallelizing, and so on a
16 core I get a speed up of over a 30%.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-10-24 19:30:47 +02:00
Ralph Sennhauser c1cb6c5f9e Fix clang warning wrt rdynamic
"-rdynamic" is a linker flag. The gcc frontend gracefully ignores it but
not clang. Remove it from CXXFLAGS and only leave it in LDFLAGS.

Fixes: #5582

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-10-19 09:47:34 +02:00
Ralph Sennhauser 28a9692893 Allow system cxxtest
Add option to build-source-libs and premake to uses system provided
cxxtest.

Closes: #5792

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-10-13 18:27:18 +02:00
Itms ac3e8f34c3 Ignore LNK4221 in Windows builds 2024-09-28 21:55:30 +02:00
Itms 0f87124b98 Some glad improvements
- Silence a MSVC warning in vulkan.cpp, refs #6987
- Document the patching of gl.h for macOS, from r26094
- Fix shellcheck warnings in the generation script
2024-09-08 09:26:46 +02:00
Itms 35d998694f Move glad from source-libs to source/third_party
Improve definition of the gladwrapper project in premake.
2024-09-08 09:18:45 +02:00
Stan 028ec40165 Add a RC file to add metadata to the pyrogenesis executable 2024-08-28 23:37:36 +02:00
vladislavbelov 82bf9bb902 Removes WInit module completely. Refs #2611
Comments By: phosit
Differential Revision: https://code.wildfiregames.com/D5085
This was SVN commit r27810.
2023-08-22 17:59:01 +00:00
vladislavbelov 70d89254c8 Fixes linking failure solution introduced in 48ba4d9cb4 for SDL dependency.
Refs #3138

Accepted By: Itms
Differential Revision: https://code.wildfiregames.com/D5065
This was SVN commit r27764.
2023-07-18 20:21:59 +00:00
vladislavbelov 624df119ef Fixes Windows build for some configurations after 70e7acfb26.
The divergence for /DELAY* options was started in 137487c521.
Refs 2405a98b58 and 09df66f871, ec3452679c, 82dc962a56, 137487c521.

Differential Revision: https://code.wildfiregames.com/D5070
This was SVN commit r27752.
2023-07-05 20:31:56 +00:00
vladislavbelov 70e7acfb26 Removes manual unload of delay-loaded DLLs on Windows.
Differential Revision: https://code.wildfiregames.com/D5056
This was SVN commit r27733.
2023-06-23 11:55:33 +00:00
vladislavbelov beef529cc6 Adds more libraries to feedback reports. Refs #6711
Comments By: phosit, Stan
Differential Revision: https://code.wildfiregames.com/D4949
This was SVN commit r27607.
2023-04-16 22:28:55 +00:00
s0600204 c025776703 Use premake5 beta2's externalincludedirs when available
As of the `beta2` version of `premake5`, `sysincludedirs` has been
deprecated
and replaced with/renamed to `externalincludedirs`, and continuing to
use it
causes warnings to be emitted.

With this change, we now use `externalincludedirs` when available so as
to
prevent the warnings, falling back to `sysincludedirs` when it's not to
prevent
breakage with pre-`beta2` versions of `premake5`.


Accepted By: sera
Fixes: #6785
Differential Revision: https://code.wildfiregames.com/D4980
This was SVN commit r27606.
2023-04-16 17:05:30 +00:00
Stan 9347192591 Fix bundled spidermonkey code in Premake.
It still won't link if the user has a more recent issue than whatever
was vendored with Spidermonkey. Refs:
https://code.wildfiregames.com/D3127.
Fix option --with-system-spidermonkey info oversight when updating in
d8332a2938 and d92a2118b0 and d5db03c303
Reported by @sera, @linkmauve

This was SVN commit r27440.
2023-01-14 12:14:56 +00:00
vladislavbelov 408c93744c Adds dependent libraries for Vulkan. Refs #6636
Tested By: phosit, Stan
Differential Revision: https://code.wildfiregames.com/D4869
This was SVN commit r27387.
2023-01-08 23:12:54 +00:00
Stan 6e8e6e986d Fix glad not building on BSD
Differential Revision: https://code.wildfiregames.com/D4781
This was SVN commit r27083.
2022-09-01 20:44:49 +00:00
vladislavbelov 9845a99f77 Adds EGL support for Wayland.
Tested By: Freagarach, Mentula, phosit
Differential Revision: https://code.wildfiregames.com/D4642
This was SVN commit r26929.
2022-06-09 21:09:32 +00:00
wraitii f82fc6431b Fix SM compilation on M1, fix cross-compilation.
Fixes 08e7efc76a.
The SM build script worked on its own, but the mac OS libraries script
passes it an unexpected value.
This also fixes cross-compilation arm -> x86.
Harfbuzz is explicitly not used when compiling freetype to avoid
pkgconfig using it.

Reorganize the logic a little bit around architecture handling.

Differential Revision: https://code.wildfiregames.com/D4647
This was SVN commit r26882.
2022-05-15 21:22:49 +00:00
wraitii 08e7efc76a Allo native builds on Mac OS M1 / Apple Silicon
- Update GMP to a version that supports arm64 darwin
- Patch spidermonkey 78 to build and run on arm64 darwin
- Choose the correct architecture dynamically in build scripts
- Include python workaround that fixes python related errors on
spidermonkey build

Based on a patch by: kumikumi
Based on a patch by: Langbart
Fixes #6474

Differential Revision: https://code.wildfiregames.com/D4607
This was SVN commit r26881.
2022-05-15 06:45:53 +00:00
vladislavbelov 62e589ab76 Adds renderer backend interface and dummy backend.
Comments By: phosit, Stan
Tested By: Langbart, phosit
Differential Revision: https://code.wildfiregames.com/D4636
This was SVN commit r26858.
2022-05-08 22:02:46 +00:00
Stan 3694a12152 Fix x86 Unix versions of 0 A.D. not being able to open the public.zip file.
Patch by: @nwtour
Differential Revision: https://code.wildfiregames.com/D4413
This was SVN commit r26378.
2022-02-14 11:01:02 +00:00
vladislavbelov 8c068aab07 Removes possibility to link lowlevel library dynamically.
Tested By: Langbart
Differential Revision: https://code.wildfiregames.com/D4470
This was SVN commit r26281.
2022-01-31 06:53:30 +00:00
wraitii c1f779dff5 Fix compilation on Apple Silicon
This allows cross-compiling for x86_64 on mac ARM machines, and sets
things up for a switch later.
SDL upgrade is necessary for compilation with the GLES headers in
different SDKs.

Tested by: langbart, minohaka
Differential Revision: https://code.wildfiregames.com/D4424
This was SVN commit r26208.
2022-01-13 14:42:42 +00:00
vladislavbelov 478164962f Removes static linking of OpenGL library.
Tested By: Langbart, Stan
Differential Revision: https://code.wildfiregames.com/D4387
This was SVN commit r26104.
2021-12-24 08:02:27 +00:00
Stan c9bea80e0d Use GLAD2 a multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator.
Comments by: @nwtour, @Langbart, @bb
Based on patch by: @echotangoecho
Tested on Windows 7 & 10, Ubuntu and macos.

Differential Revision: https://code.wildfiregames.com/D721
This was SVN commit r26093.
2021-12-21 22:03:31 +00:00
vladislavbelov 89c181ded1 Encapsulates information about GL inside device.
Commented By: Stan
Differential Revision: https://code.wildfiregames.com/D4375
This was SVN commit r26072.
2021-12-15 06:43:41 +00:00
vladislavbelov fe511e88d9 Adds FreeType support to the engine.
Tested By: Langbart, Imarok, Stan, s0600204, wraitii
Differential Revision: https://code.wildfiregames.com/D4108
This was SVN commit r26040.
2021-12-08 22:14:43 +00:00
s0600204 31b70309b3 Debundle Valgrind and make it optional
If a *nix user wishes to build `pyrogenesis` with support for Valgrind
(such as
it is), then can do so by passing `--with-valgrind` to
`update-workspaces.sh`.
(They will need Valgrind installed and locateable via `pkg-config`.)


Reviewed By: sera, Stan
Fixes: #2904
Differential Revision: https://code.wildfiregames.com/D3646
This was SVN commit r25933.
2021-09-20 22:18:28 +00:00
wraitii cdd75deafb XMB Improvements, parse JS into XMB, make strings more efficient.
XMB format is bumped to 4, invalidating all cached files. The
differences are:
 - element/attribute names are stored after the elements themselves, and
not before. This allows writing XMB data in one pass instead of two.
 - names themselves becomes offsets (instead of arbitrary integers),
making getting the string from the int name much more efficient.

XMBFile is renamed to XMBData to clarify that it does not, in fact,
refer to a file on disk.

XMBData::GetElementString is also changed to return a const char*, thus
not creating an std::string. A string_view version is added where
convenient.

The XML->XMB and JS->XMB conversion functions and the corresponding
storage are moved to `ps/XMB`, since that format doesn't particularly
relate to XML. CXeromyces becomes lighter and more focused as a result.
The XML->XMB conversion also benefits from the above streamlining.

Note that in a few cases, string_view gets printed to CLogger via
data(), which is generally not legal, but we know that the strings are
null-terminated here. Our libfmt (version 4) doesn't support
string_view, that would be v5.

Differential Revision: https://code.wildfiregames.com/D3909
This was SVN commit r25375.
2021-05-04 13:02:34 +00:00
vladislavbelov 56047ac9fa Adds logs to CameraController for speed changes of camera scroll, rotate and zoom.
Patch By: nwtour
Differential Revision: https://code.wildfiregames.com/D3604
This was SVN commit r25045.
2021-03-12 20:57:33 +00:00
Stan c16d961cd2 Enable support for powerpc64 systems. New problems with NVTT will be addressed in another diff.
Patch by: @tpearson-raptor
Comments by: @q66
Refs:
https://github.com/void-linux/void-packages/blob/master/srcpkgs/0ad/patches/ppc64.patch

Differential Revision: https://code.wildfiregames.com/D1619
This was SVN commit r24995.
2021-03-03 15:13:47 +00:00
Angen 1a8de6d2b8 Hide ip and port from users until they want to join, add optional password
Current issue with the lobby, is that we make ips of hosts public for
anyone to read. This patch consists of 3 parts.
1.) Removing ips and ports from lobby javascript
2.) Removing need of script on the server to attach public ips to game
stanza by asking the host using xmppclient as proxy.
3.) Implementing password protected matches, to deny this information to
not trusted players.

Further description:
Do not send ports and stunip to the bots.

Removed from stanza.
Do not send ip to the lobby.

Removed from mapping gamelist from backend to gui (still on the backend
side, because it is done by script on 0ad server).
Get ip and ports on request when trying to connect.

On the host side, ask stun server what is host's public ip and remember
it.
On the client side, send iq through xmppclient to the hosting player and
ask for ip, port and if Stun is used, then if answer is success,
continue
   with connecting, else fail.
Add optional password for matches.

Add password required identifier to the stanza.
Allow host to setup password for the match. Hash it on the host side and
store inside Netserver. If no password is given, matches will behave
as it is not required.
On the client side, if password for the match is required, show
additional window before trying to connect and ask for password, then
hash it
and send with iq request for ip, port and stun.
Server will answer with ip, port and stun only if passwords matches,
else will asnwer with error string.
Some security:
Passwords are hashed before sending, so it is not easy to guess what
users typed. (per wraitii)
Hashes are using different salt as lobby hashing and not using usernames
as salt (as that is not doable), so they are different even typing the
same password as for the lobby account.
Client remembers which user was asked for connection data and iq's id of
request. If answer doesn't match these things, it is ignored. (thnx
user1)
Every request for connection data is logged with hostname of the
requester to the mainlog file (no ips).
If user gets iq to send connection data and is not hosting the match,
will respond with error string "not_server".
If server gets iq::result with connection data, request is ignored.

Differential revision: D3184
Reviewed by: @wraitii
Comments by: @Stan, @bb, @Imarok, @vladislavbelov
Tested in lobby

This was SVN commit r24728.
2021-01-20 18:31:39 +00:00
Stan 078b4100c1 Fixes FreeBSD build on 12.2
- Fix compiler warning with Clang
- Fix usage of libiconv
- Fix an incorrect SSE macro in NVTT for SSE

Patch by: @madpilot and Stan
Fixes: #5255
Differential Revision: https://code.wildfiregames.com/D3421
This was SVN commit r24704.
2021-01-19 16:59:53 +00:00