1
0
Fork 0
Commit graph

33 commits

Author SHA1 Message Date
kcgen
d423a4363b Add empty configs for remaining package managers 2020-05-10 21:58:52 +02:00
kcgen
a495aefe83 Add Haiku OS support to build system 2020-05-09 18:46:08 +02:00
kcgen
d7b8590026 Allow GCC's LTO on all platforms 2020-05-06 09:11:58 +02:00
kcgen
ec43dabba4 Enable NEON SIMD for corresponding ARM platforms 2020-04-27 03:32:26 +02:00
kcgen
2f4830830e Add nightly ARM & IBM platform builds 2020-04-27 03:32:26 +02:00
kcgen
01728f719e Drop xvfb, and add autotools for apt-repos 2020-04-27 03:32:26 +02:00
kcgen
892a6f61a2 Print the log if configure fails 2020-04-27 03:32:26 +02:00
krcroft
31d4f485c8 Add aliasing warnings to the warnmore target 2020-04-15 14:26:29 +02:00
krcroft
9d3f982f52 Enable strict aliasing for release builds 2020-04-15 14:26:29 +02:00
krcroft
96943eb68b Add ARM platforms to the build script 2020-04-14 05:55:18 +02:00
krcroft
9d576b5cb7 Statically link libasan during ASAN builds
Some deployments of GCC won't link ASAN build without explicitly
specifying the library, and report:

  "ASan runtime does not come first in initial library list;
   you should either link runtime to your application or
   manually preload it with LD_PRELOAD"

This commit includes the asan library by default for respective
builds.
2020-04-13 14:15:07 +02:00
krcroft
85517f82a9 Add memory-count instrumentation to Clang MSAN builds 2020-04-13 14:15:07 +02:00
krcroft
e1d2fe3135 Make sanitizers platform-agnostic 2020-04-13 14:15:07 +02:00
krcroft
6d308e1129 Append to lists to avoid clobbering 2020-04-09 11:59:04 +02:00
krcroft
de3958fd74 Add an 'optinfo' build target
The 'optinfo' build target asks GCC to print optimizations that
could not be performed to local 'missing.txt' files; these will
appear in each repsective subdirectory having source files.

Both GCC and Clang will now print Verbose vectorization information
during the build process, often describing why vectorization
cannot be performed.

This commit also enables basic instruction and math vectorization
for both the 'release' and 'optinfo' targets. This includes making
use of altivec instructions (available on all powerpc processors),
and at a minimum sse4.2 on all x86_64 processors (circa-2008+ AMD
and Intel CPUs).

Vectorization is also re-enabled for GCC FDO builds, which would
otherwise be disabled when we switch to -O2 optimizations.
2020-04-09 11:58:51 +02:00
krcroft
78ae277d28 Expand use and support for LTO and FDO builds
Adds LTO to the CI build for Linux, which bring it as close as possible
to the planned formal release, which will additionally use FDO.

Adds some helper scripts to work with FDO files.

Improves the build notes for how to create and use FDO files.
2020-04-01 08:03:39 +02:00
krcroft
2c8db8fbe4 Use ccache in the CI workflows 2020-03-24 03:42:04 +01:00
krcroft
99a47bc590 Use ccache if available 2020-03-22 21:12:36 +01:00
krcroft
1460f90720 Allow finer grain tracing for debug builds 2020-03-20 01:06:23 +01:00
Joshua Fern
f2029d71d8 Update copyright dates to 2020 2020-03-07 00:18:01 +01:00
Patryk Obara
a110153fff Bundle autoconf ax_cxx_* macros
Users, who try to compile keep tripping over it, despite documentation
in the INSTALL file.  Also, autoconf-archive might be hard to install
for users, who opted not to use MSYS2 and stick to MinGW only.

This commit bundles macros:

AX_CXX_COMPILE_STDCXX (version/serial 10)
AX_CXX_COMPILE_STDCXX_11 (version/serial 18)
2020-01-13 01:42:20 +01:00
krcroft
c776239c3c Switch from static to dynamically-linked libstdc++
When using C++11 code that can possibly throw exceptions (such as
std::make_shared(...) linking libstdc++.a using Clang on MSYS2
will generate errors such as:

  libstdc++.a(eh_personality.o): duplicate section
  `.rdata$_ZTSSt9exception[_ZTSSt9exception]' has different size

Although potential suggested fixes involve allowing duplicate symbols,
-Wl,--allow-multiple-definition, this solution can introduce unexpected
behavior when one symbol clobbers another symbol.

To solve this, switching to dynamic linking of the libstdc++ library
appears to be all that's needed.
2020-01-07 19:46:32 +01:00
Patryk Obara
44c7fb9165 Update CI to target SDL2 2019-12-26 03:23:19 +01:00
krcroft
d22d48b527 Add all OSes to the workflow 2019-12-11 20:30:19 +01:00
krcroft
343c85fa17 Add empty file to hide automator warning 2019-12-11 20:30:19 +01:00
krcroft
d12172b8a4 Add ncurses to installer packages 2019-12-11 20:30:19 +01:00
krcroft
eb9c0a8ec3 Ensure make uses ASCII-only characters 2019-12-11 20:30:19 +01:00
krcroft
92266db4f6 Add "warnmore" build-type to the build script 2019-12-11 20:30:19 +01:00
krcroft
5beac8e310 Remove unecessary string quotes 2019-12-11 20:30:19 +01:00
krcroft
7fe6f7f04c Add -DNDEBUG to common release flags 2019-12-11 20:30:19 +01:00
krcroft
b55b43f543 Use PRIuPTR and define it for Windows GCC 64-bit 2019-12-03 05:12:28 +01:00
Patryk Obara
719536341d Use make's output-sync to prevent log corruption
This works out of the box on Linux and MSYS2, but does not work on
macOS - Xcode supplied make does not support this option, so GNU make is
used instead.

Unfortunately, adding new package on macOS did not invalidate the cache,
this package removes the brew cache from macOS job to avoid this problem
in the future.

Fixes: #53
2019-11-26 04:48:16 +01:00
krcroft
0f11ab8ecb Refactor the build and list-packages scripts
Until now the build and package scripts have supported
several architectures, compilers, build types, package-managers,
and bit-depth targets.

The code might be maintainable if left as-such, however we have plans
to continue expanding the number of architectures (ARM, PPC, ... ),
operating systems (Android, BSDs, ...), and build variations
amung those.

The scripts (regardless of language) would only grow in complexity
as more variations are added. Thus, we needed a solution that can
scale without adding complexity.

To achieve this, the scripts were refactored as follows:
 - all "data" was moved out of code into configuration files
 - A back-end "Automator" engine was written to parse the
   data based on generic variables fed to it by a front-end
   script
 - build.sh and list-packages.sh were re-authored as thin front-end
   scripts that drive the automator
 - Their CLI's were retained so there has been very little change
   needed to the CI invocation lines.  The only changes have been to
   clarify the existing arguments improved based on feedback, ie:
   --build-type release, --build-type debug instead of fast, small
2019-11-24 15:16:44 +01:00