Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SCons: Unify tools/target build type configuration #66242

Merged
merged 1 commit into from
Sep 30, 2022

Commits on Sep 26, 2022

  1. SCons: Unify tools/target build type configuration

    Implements godotengine/godot-proposals#3371.
    
    New `target` presets
    ====================
    
    The `tools` option is removed and `target` changes to use three new presets,
    which match the builds users are familiar with. These targets control the
    default optimization level and enable editor-specific and debugging code:
    
    - `editor`: Replaces `tools=yes target=release_debug`.
      * Defines: `TOOLS_ENABLED`, `DEBUG_ENABLED`, `-O2`/`/O2`
    - `template_debug`: Replaces `tools=no target=release_debug`.
      * Defines: `DEBUG_ENABLED`, `-O2`/`/O2`
    - `template_release`: Replaces `tools=no target=release`.
      * Defines: `-O3`/`/O2`
    
    New `dev_build` option
    ======================
    
    The previous `target=debug` is now replaced by a separate `dev_build=yes`
    option, which can be used in combination with either of the three targets,
    and changes the following:
    
    - `dev_build`: Defines `DEV_ENABLED`, disables optimization (`-O0`/`/0d`),
      enables generating debug symbols, does not define `NDEBUG` so `assert()`
      works in thirdparty libraries, adds a `.dev` suffix to the binary name.
    
    Note: Unlike previously, `dev_build` defaults to off so that users who
    compile Godot from source get an optimized and small build by default.
    Engine contributors should now set `dev_build=yes` in their build scripts or
    IDE configuration manually.
    
    Changed binary names
    ====================
    
    The name of generated binaries and object files are changed too, to follow
    this format:
    
    `godot.<platform>.<target>[.dev][.double].<arch>[.<extra_suffix>][.<ext>]`
    
    For example:
    - `godot.linuxbsd.editor.dev.arm64`
    - `godot.windows.template_release.double.x86_64.mono.exe`
    
    Be sure to update your links/scripts/IDE config accordingly.
    
    More flexible `optimize` and `debug_symbols` options
    ====================================================
    
    The optimization level and whether to generate debug symbols can be further
    specified with the `optimize` and `debug_symbols` options. So the default
    values listed above for the various `target` and `dev_build` combinations
    are indicative and can be replaced when compiling, e.g.:
    
    `scons p=linuxbsd target=template_debug dev_build=yes optimize=debug`
    will make a "debug" export template with dev-only code enabled, `-Og`
    optimization level for GCC/Clang, and debug symbols. Perfect for debugging
    complex crashes at runtime in an exported project.
    akien-mga committed Sep 26, 2022
    Configuration menu
    Copy the full SHA
    39facb3 View commit details
    Browse the repository at this point in the history