Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Taken from https://github.com/github/gitignore/blob/master/Global/VisualStudioCode.gitignore
|
|
|
|
|
|
|
|
Also ignore a couple more warnings that we didn't find helpful:
- Cyclomatic complexity: this contributed to hundreds of
warnings previously throughout the codebase. Newly added
code hasn't triggered this once - so it's not adding much
value. Likewise, if we import patches, we are unlikely to
block the patch on this criteria anyway.
- Structure-size reduction through member re-ordering: we did
not treat this as a blocker in new code, and instead prefer
the order that makes more logical sense over saving a couple
bytes of memory.
|
|
Meson is fully operational, old buildsystem is not (on this branch).
Remove following files:
- .gitignore files that we needed to support clean in-tree builds
- all automake files in all subdirectories
- m4 macros
- Autoconf-specific documentation for tests
- configure.ac, autogen.sh, and other Autotools-related files
Few .gitignore files were adjusted, as they had entries unrelated
to Autotools.
|
|
As of right now, new buildsystem is capable of creating clean,
featureful builds on Linux x86_64 - but these are not equivalent of all
that are exposed via autoconf yet. As new features will be added, it
will gradually replace Autotools and build.sh.
Preserve our existing structure of building a static library per
"module", and then linking them together to create dosbox binary.
Unlike automake, we don't need to create a library per subdirectory -
it's entirely our pragmatic choice. As a result, we don't have multiple
sub-libraries for e.g. hardware module: all files inside are handled by
a single meson.build file (we can simplify this even further and
make the project structure even flatter or deeper as needed.
Create config.h.in template file - meson turns it into our new config.h
file, filling it with information detected in meson.build scripts.
Create new file for main function - this way it'll be easier to ignore
this file for gtest builds (which will have their own main functions).
Old main was renamed to sdl_main and is now declared as the very first
function in dosbox.h file.
Update elementary build documentation in README.md and CONTRIBUTING.md.
Remove majority of content in the INSTALL file. Information in that
file was either outdated or is now automatically verified by meson.build
script.
|
|
|
|
|
|
These are runtime files used by clangd language server for text editors
or IDEs using Language Server Protocol.
compile_commands.json is file describing compilation flags per file;
it can be generated e.g. using program 'bear'
|
|
This includes the three major build types:
- debug, which include Intel's unique take on effc++
- release, which optimizes for the host instruction set
- optinfo, which includes both of the above plus detailed
vectorization diagnostics and recommendations stored
as *.optinfo records per C/CPP-file
ccache partially supports ICC, so this will use that
when possible.
Running the Intel compiler requires considerable environment
setup, which some might prefer not to be loaded by default, so
this will also load those environment settings if they're found
at the default install location.
|
|
|
|
|
|
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.
|
|
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.
|
|
This job depends on credentials stored in GitHub secrets, therefore
fails for pull requests created by new contributors out of their forked
repos.
|
|
|
|
|
|
|
|
|
|
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
|
|
The commit makes the following changes:
- The package listing script now requires the user specify which package manager
they're using. This approach resolves the ambiguity if a system has more than
one package manager (ie: macports & brew)
- Adds packages for Fedora, RedHat/CentOS, Arch, and OpenSuse
- Eliminates unecessary code in the package manager script
(more can be eliminate at the expense of complexity)
- Made a couple minor fixes to the build script
- Tried to further "standardize" the workflows as follows:
- names are Compiler Version (Environment)
- Sorted them alphabetically in their respective YAMLs
- Minor spacing adjustment to align values (where it makes sense)
- Dropped quotes around some of the string values because I'd
rather our YAML be consistent and propper instead of changing our
YAML to suite the limitations of an editor (can a different plugin
or better parser be used?)
- Added macOS workflows for Homebrew and MacPorts, both ready to
go and tested, but with the build step just commented out
|
|
|
|
Previous solution format does not work any more in modern Visual Studio.
Includes some project adjustments needed to cleanly build the project in
MSVC without any warnings.
|
|
|
|
|