Giter Club home page Giter Club logo

zdoom-macos-deps's People

Contributors

alexey-lysiuk avatar

Stargazers

 avatar

Watchers

 avatar

zdoom-macos-deps's Issues

Stateless targets

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.

CMake update needed for Xcode 14

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.

SDL2 assertion failure

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'

Automated dependencies versions checking

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.

Check pre-installed CMake version

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.

Split dependency module

Module with dependency targets is fairly large. Split it onto several modules, e.g. libraries and tools.

Fix full paths stored in binaries

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 executable
  • instpatch/lib/libinstpatch-1.0.a
  • intl/lib/libintl.a
    Configure with --localedir=/usr/local/share/locale
    Install with make install-exec-am install-nodist_includeHEADERS
  • pkg-config/bin/pkg-config.exe, doesn't affect built GZDoom/Raze executable
  • vpx/lib/libvpx.a, doesn't affect built GZDoom/Raze executable
  • vorbis/lib/libvorbis.a, vorbis/lib/libvorbisenc.a, vorbis/lib/libvorbisfile.a

Related issue is #58.

Split build script onto several modules

  • Put all code into new package. Build script will use it as a black box.
  • Split build state from builder class. Pass build state instance to target methods.
  • Move base, main, dependency, special targets into separate files. Put them in own package.

MoltenVK static library

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.

Devbuild script

Move devbuild script from tools repository. No deployment, just building and packaging.

Add tests

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:

  • Targets with pkg-config entries
  • Executable targets
  • Others, CMake-based targets in particular

Support arm64e

Consider need in arm64e architecture. Add it or maybe replace arm64 with it.

Do not specify minimum OS version in branch name

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.

Script to build all dependencies

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.

Dependencies v2.0

  • Build from source code with Xcode is the only requirement, related to #6
  • Store all dependencies in one prefix path. MoltenVK will need special handling though
  • Proper .gitignore to filter out intermediate and unwanted files/directories like bin, share, etc.
  • Simplified *ZDoom build script

Provide own libiconv

The version of libiconv distributed with macOS is quite outdated. It seems to be 1.11 released in 2006.

Replace downloaded CMake with built one

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.