zdoom / zdoom-macos-deps Goto Github PK
View Code? Open in Web Editor NEW*ZDoom binary dependencies for macOS
*ZDoom binary dependencies for macOS
Needs lame
for encoding. MP3 support via CMake is a bit broken in 1.1.0.
SDL2_mixer seems to have an issue with FluidSynth 2.1.6. Check if this change needs to be applied as a patch.
Need to figure out potential issues with this change.
Add missing dependencies to build PrBoom+.
Store SDKs as Release artifacts. Download SDKs as a build step, and extract them to sdk
directory.
Target's prepare_source()
and detect()
methods do not depend on object instances.
Evaluate replacement of native pkg-config
with pure Python implementation.
It can be used directly as a module, and its parsing capabilities allows to simplify modifications of .pc files.
Build recently added dependencies: libzt, fmt, SDL_audiolib.
Evaluate usefulness of experimental speex support.
A generalization of #34. Target objects should be immutable and stateless. Deep copying of a target object in order to build it for multiple platforms needs to be fixed.
Xcode 14 requires a newer version of CMake to generate Xcode project properly. The minimum version should be 3.23.3 which is not released yet.
See this report on CMake issue tracker.
Provide or download CMake if itβs not installed in the system.
Investigate possibility to combine platform-dependent header files via difflib
.
This allows to have different headers, config scripts, .pc files, etc for x86_64 and arm64. ffi
, glib
, and especially sdl2
will benefit from this.
Header merging feature will be removed as well.
Running Quakespasm leads to the following pop-up window
Assertion failure at SDL_SetWindowIcon_REAL (src/video/SDL_video.c:1797), triggered 1 time:
'window && window->magic == &_this->window_magic'
Consider addition of automated checking of dependencies versions.
GitHub API allows to fetch releases and tags information. However, it's not possible to get the latest tag, and the list of tags isn't always sorted by creation date.
Other dependencies require parsing of their websites.
Provide a background on goals, design decisions, limitations, etc.
When /Applications/CMake.app
or system-wide cmake console executable was found, parse output of cmake --version
in order to verify that its version is recent enough.
Consider to add support for Vulkan Portability Implementation.
Building Rust compiler and Cargo package manager is out of question, and they need to be downloaded from the official site.
Here is the sample build script without cross-compilation support.
Replace all string operations used for paths processing with object-oriented filesystem from pathlib
module.
Check if zlib-ng brings performance improvements. Its CMake based build system is a nice bonus as well.
Zip and Unrar should have detect()
method overloaded. Check other targets as well.
Module with dependency targets is fairly large. Split it onto several modules, e.g. libraries and tools.
A few libraries and tools have full paths to build or install directories saved inside them.
glib/lib/libglib-2.0.a
gmake/bin/gmake
, doesn't affect built GZDoom/Raze executableinstpatch/lib/libinstpatch-1.0.a
intl/lib/libintl.a
--localedir=/usr/local/share/locale
make install-exec-am install-nodist_includeHEADERS
pkg-config/bin/pkg-config.exe
, doesn't affect built GZDoom/Raze executablevpx/lib/libvpx.a
, doesn't affect built GZDoom/Raze executablevorbis/lib/libvorbis.a
, vorbis/lib/libvorbisenc.a
, vorbis/lib/libvorbisfile.a
Related issue is #58.
Static library is built along with dynamic one. The main problem is dynamic loading of MoltenVK in GZDoom and Raze. This is the only way Vulkan implementation can be discovered by Volk.
At the moment, it's impossible to link MoltenVK statically without patching GZDoom/Raze source code.
Move devbuild script from tools repository. No deployment, just building and packaging.
Add tests for all dependencies in order to check updated libraries without (re)building targets that depend on them.
Each test should be compiled and linked for both architectures, and it should have zero exit status when run.
Separate test workflows:
pkg-config
entriesConsider need in arm64e architecture. Add it or maybe replace arm64 with it.
Make process fails with no apparent error. Is it a problem of parallel build?
make[1]: *** [src/CMakeFiles/libfluidsynth-OBJ.dir/all] Error 2
make: *** [all] Error 2
Create single main
branch, set minimum supported version of macOS globally, and keep ability to override it by targets.
Everything should be ready for this. External build scripts that check out a branch with version number in its name need to be updated.
master
branchMercurial repositories:
https://bitbucket.org/Torr_Samaho/zandronum/
https://bitbucket.org/Torr_Samaho/zandronum-stable/
GitHub mirror:
https://github.com/TorrSamaho/zandronum
At the moment, CMake modules installed along with dependencies are ignored.
Build lite version of FluidSynth without GLib and its dependencies
Reference: https://github.com/dotfloat/fluidsynth-lite
Add support for git submodules recently added to GZDoom.
Make a script based on bym, similar to dependencies build script for NBlood.
Libraries that use makefiles created with configure
or generated by CMake work out of the box, GLib requires Meson, MoltenVK uses shell script + Xcode project.
Add .pc files for libraries.
Chocolate Doom and Doom Retro targets can be simplified.
bin
, share
, etc.Describe usage, and prerequisites.
The version of libiconv
distributed with macOS is quite outdated. It seems to be 1.11 released in 2006.
Add cmake
build target, remove download target, remove usage of external CMake.
In order to cross-compile CMake, build a bootstrap cmake
executable for native platform first (via configure
script which place executable to Bootstrap.cmk
subdirectory), and use it configure final targets for both architectures.
Also, cross-compilation requires HAVE_POLL_FINE_EXITCODE
CMake variable to be explicitly set to zero, i.e. -DHAVE_POLL_FINE_EXITCODE=0
, during final target configuration stage.
Currently, all CMake targets are built with -O3
compiler option implied by Release configuration.
Evaluate the difference in performance and executable file sizes of Release and RelWithDebInfo, i.e. -O3
vs. -O2
.
https://discourse.mc-stan.org/t/o2-vs-o3-compiler-optimization-level/3714
https://iitd-plos.github.io/col729/labs/lab0/lab0_submissions/siy187504.pdf
This requires some heuristic to detect target by its source code.
Example targets are EDuke32 and NBlood.
Dynamic library, macOS 10.11+, etc.
Xcode 12.2 is the oldest version required to build ARM64 target.
https://dive.medium.com/how-to-get-the-current-selected-xcode-and-list-installed-e16278c8c65a
defaults read "$(xcrun xcode-select --print-path)/../version.plist" "CFBundleShortVersionString"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.