Commit Graph

1370 Commits

Author SHA1 Message Date
Kp 962a37e75e Backport more ranges support for OS X clang
Apple clang is currently version 14, but Apple's libc++ is version 13,
and so lacks even more std::ranges support than previously reported.
Add more stub backports to work around this.
2022-11-06 18:18:57 +00:00
Kp 3d5de92058 Fix OS X clang build
OS X still uses clang-14, which lacks sufficient std::ranges support for
recent Rebirth changes.

- Rewrite uses of std::ranges::SYMBOL to ranges::SYMBOL
- Add a stub header that, on gcc, provides for each SYMBOL a statement
  `using std::ranges::SYMBOL;`, to delegate back to the standard library
  implementation.
- On clang, define a minimal implementation of the required symbols,
  without constraint enforcement.  Compile-testing with gcc will catch
  constraint violations.

Once OS X clang ships a standard library with the required features,
this stub header will be removed and the uses changed back to their full
names.
2022-10-31 00:51:32 +00:00
Kp 4506d0f6f3 Change check_size_type_format_modifier to use ''.format 2022-10-23 23:00:24 +00:00
Kp ee4268bf9f Simplify variable binding in check_size_type_format_modifier 2022-10-23 23:00:24 +00:00
Kp 16698137ea Enable gcc attribute suggestion warnings
Adding `final` can allow gcc to devirtualize a call.  Request compiler
warnings wherever `final` would improve this.  As of this writing, there
are no places where `final` would be helpful and would also be wrong, so
this is enabled everywhere.
2022-10-16 23:20:34 +00:00
Kp 90d3d82d8e Default disable VR side-by-side for OpenGL ES
VR requires glDrawBuffer, which Mesa OpenGL ES does not offer.  Default
VR to disabled for OpenGL ES users.  Users who want to try it anyway can
still set use_stereo_render=1 in the SCons environment.
2022-10-09 23:15:20 +00:00
Kp e385ff1c3b Use std::ranges::find_if instead of std::find_if
std::ranges::find_if permits use of a sentinel instead of a full
iterator, and supports std::ranges::find as an alternative to certain
simple uses of std::find_if.

Where possible, use the form that takes a range, rather than the form
that takes two iterators.

Add a declared, but not defined, default constructor for
self_return_iterator to satisfy the standard library's concept
`semiregular`, which insists that sentinels be default-constructible,
even for those functions that never need to do so.

Add a defined, but unused, operator++(postfix) for zip_iterator to
satisfy a standard library concept for `forward_iterator`.
2022-10-09 23:15:20 +00:00
Kp d74dbeb79d Add constexpr to SConf operator== test
This allows using static_assert instead of a runtime comparison.
2022-10-09 23:15:20 +00:00
Kp d84de58d9b Add more special handling for Haiku OS
Haiku does not accept `-pthread`, and puts its network functions in a
separate library.  Add a special HaikuPlatformSettings to handle these
quirks.

Reported-by: LambdaCalculus37 <https://github.com/dxx-rebirth/dxx-rebirth/issues/641>
2022-10-02 19:51:36 +00:00
Kp 5b7fb9c402 Reduce use of quotes for passing vers_id defines
Windows shells interpret quoting differently from Linux shells, causing
some of the generated strings to have ugly escape sequences in them.
Switch to passing the defined values as lists of character codes, so
that no quoting is needed.  This makes the command line uglier, but
produces more readable strings in the generated program.
2022-10-02 19:51:36 +00:00
Kp 98b7679732 Remove obsolete MacOS C source files
These are not referenced in SConstruct.  messagebox.c uses C linkage for
symbols that would be referenced from a C++ file, so this has likely
been broken since the common code moved to C++.
2022-10-02 19:51:36 +00:00
Kp 8f1055ca6b Use std::span for poison helper functions 2022-09-24 17:47:51 +00:00
Kp ee68f43bb5 Remove SConf tests for curl, jsoncpp
These have been disabled since they were added in 2016, and the new HTTP
tracker they were meant to support was never put into service.  Remove
the tests.

Fixes: 9a8bd1aecb ("Add disabled tests for curl/jsoncpp")
2022-09-24 17:47:51 +00:00
Kp 232c648024 Add Windows version resource for Windows build 2022-09-11 17:00:45 +00:00
Kp 231acfe0ae Include git-describe data in archived snapshots 2022-08-31 01:46:58 +00:00
Kp c08b35ff45 Add SConf test for C++17 attribute [[nodiscard]]
This attribute is already in use in the code, but add an explicit test
to detect at configure time if the compiler lacks support for it.
2022-08-22 01:24:49 +00:00
Kp b8313fdeb0 Filter out empty feature text fragments
Avoid generating a banner comment over an empty text fragment.
2022-08-22 01:24:49 +00:00
Kp dc674eafe8 Replace various uses of std::enable_if with C++20 requires()
Compiler error messages are generally better when reporting a misuse
that fails a requires() versus reporting a misuse that fails a
std::enable_if.  In some cases, this also makes the code clearer, and
avoids the need for dummy template parameters as a place to invoke
std::enable_if.
2022-07-30 17:42:59 +00:00
Kp e5dcb8a505 Prefer C++20 std::span over internal span for decode_row
This generates the same code before and after.
2022-07-30 17:42:59 +00:00
Kp 25d0ae8f65 Use an explicitly defaulted exact_type<T>::operator==
clang-13 needed an operator==(const exact_type<T>&) defined to avoid an
ambiguity.  Now that C++20 mode is enabled, switch to a
compiler-generated operator== instead of manually defining the
equivalent function.
2022-07-02 18:10:45 +00:00
Kp aee963c015 Switch dialect to C++20
Future commits will introduce tests for and uses of C++20 features.
2022-07-02 18:10:45 +00:00
Kp e66da397a5 Add dummy 'file' key to executable entry in compilation database
clang rejects the entire database if any entry lacks a 'file' key,
regardless of whether the entry is used.

Fixes: bc6d043f5d ("Extend SConstruct compilation_database support to cover Program()")
2022-06-05 17:44:53 +00:00
Kp 58deb3c333 Rename check_header_includes object directory to be descriptive
Change from `chi` to `check_header_includes`.
2022-05-05 02:59:11 +00:00
Kp 97f8aea2f8 Use header path for check_header_includes=1 compilation database entries 2022-05-05 02:59:11 +00:00
Kp f95bc3193f Fix traceback when using `GIT=''` and `check_header_includes=1`
`check_header_includes` requires `git` to be installed and able to list
files from a working copy.  When `GIT=''` is used, SConstruct is told
not to find or run `git`.  This caused a traceback when
`check_header_includes` tried to use git to list headers.  Reorder the
test to report a clear failure message.
2022-04-24 20:42:01 +00:00
Kp 71b4c11f8c Combine DXX_HAVE_BUILTIN_BSWAP, DXX_HAVE_BUILTIN_BSWAP16
Commit f1606f7747 ("Simplify test for
__builtin_bswap16") changed the SConstruct test to either define both
DXX_HAVE_BUILTIN_BSWAP and DXX_HAVE_BUILTIN_BSWAP16 or to define neither
of them.  Follow up that commit by removing the definition of
DXX_HAVE_BUILTIN_BSWAP16 and redirecting uses of it to
DXX_HAVE_BUILTIN_BSWAP.
2022-04-17 22:27:19 +00:00
Kp 600a4f9d62 Remove special case for negative crc32
According to the documentation, starting in Python 3, the result is
always unsigned.
2022-04-16 19:38:02 +00:00
Kp f38a1b95a1 Simplify use of git-archive handling
The result of git-archive expanding `$Format:%H` will always be a valid
string.  Repeat the format specifier, so that the call to `.format()`
can be removed.
2022-02-13 19:13:38 +00:00
Kp 72064c62e7 Add unit tests for enumerate 2022-02-13 19:13:38 +00:00
Kp 7c2b8e1e6f Save full pkg-config stdout to sconf.log
Select flags parsed from pkg-config stdout were logged to the screen and
to sconf.log.  Add a line in sconf.log which shows the full stdout of
pkg-config.
2022-02-13 19:13:38 +00:00
Kp 5f1c4b34ff Fold Darwin GL test using Python ternary expression 2022-01-30 04:38:47 +00:00
Kreeblah 28a6cd26c2
Re-add macOS OpenGL test 2022-01-28 16:46:17 -08:00
Kp 78d4a36bb4 Explicitly require support for C++11 constructor inheritance
Parts of the code already used the C++11 syntax, so compilers without it
were already unsupported.  Expand the remaining uses to the standard
syntax.
2022-01-09 15:25:42 +00:00
Kp d2478d0708 Require support for C++17 attribute [[fallthrough]] 2022-01-09 15:25:42 +00:00
Kp d8cc2fd363 Factor out definition of __get_found_includes
This does not need to be a local function.  It does not need to access
anything from the containing scope, so move it to be a static method on
the class.
2022-01-07 04:26:22 +00:00
Kp 6ac75cd618 Construct compilation database earlier
This must be set up before trying to register check_header_includes
targets.
2022-01-07 04:26:22 +00:00
Kp bc6d043f5d Extend SConstruct compilation_database support to cover Program()
This is not required by clang, but should be useful for anyone who wants
to produce a machine-readable list of all the compile commands run for
building the program.  Previously, compilation_database would describe
how to build object files from sources, but not how to link those
objects.
2022-01-07 04:26:22 +00:00
Kp 0d9f2d1136 Move GL_SILENCE_DEPRECATION from CXXFLAGS to CPPDEFINES 2021-12-23 03:21:26 +00:00
Kreeblah 522acbf398
Updated enums and added define to silence deprecation warnings 2021-12-22 13:45:35 -08:00
Kp 14891bd5af Merge branch kreeblah/macos-sign-app into master
Requested-by: Kreeblah <https://github.com/dxx-rebirth/dxx-rebirth/issues/611>
2021-12-18 19:29:31 +00:00
Kp 52256223da Pass bundledir via a local, not a property on self 2021-12-18 03:22:09 +00:00
Kp a7f2d0a751 Change default build output directory to `build/` 2021-12-17 03:14:54 +00:00
Kreeblah d39d043692
Switch password auth to use an environment variable, to avoid printing it in the SConstruct logs 2021-12-14 21:01:28 -08:00
Kreeblah 5a7d09ec41
Fixed test 2021-12-12 16:21:02 -08:00
Kreeblah 9d328ed620
Added test for if bundledir is None 2021-12-12 16:17:22 -08:00
Kreeblah e640a2116d
Reused bundledir 2021-12-12 16:09:07 -08:00
Kreeblah b696a63190
Updated to pass in binary name instead of using glob 2021-12-12 16:04:31 -08:00
Kreeblah f97d553013
Updated messages 2021-12-12 15:53:41 -08:00
Kreeblah 8d0aa0c6a8
Initial changes from feedback 2021-12-12 15:45:28 -08:00
Kreeblah a5cd62e877
Updated to working SConstruct implementation 2021-12-11 20:42:55 -08:00