This is entirely unused but still could be useful in the AppKit port. Originally this was meant for Swift interop which is why it had support for other platforms, but now it's causing issues on systems like FreeBSD, so lets just gate it behind the only platform it's useful for. We also assume that Objective C blocks and Arc are supported for the AppKit port to build so no need to check for that in CMake.
55 lines
3.2 KiB
CMake
55 lines
3.2 KiB
CMake
option(BUILD_SHARED_LIBS "Build shared libraries instead of static libraries" ON)
|
|
|
|
option(ENABLE_COMPILETIME_FORMAT_CHECK "Enable compiletime format string checks" ON)
|
|
option(ENABLE_UNDEFINED_SANITIZER "Enable undefined behavior sanitizer testing in gcc/clang" OFF)
|
|
option(UNDEFINED_BEHAVIOR_IS_FATAL "Make undefined behavior sanitizer errors non-recoverable" OFF)
|
|
|
|
option(ENABLE_ALL_THE_DEBUG_MACROS "Enable all debug macros to validate they still compile" OFF)
|
|
|
|
option(INCLUDE_WASM_SPEC_TESTS "Download and include the WebAssembly spec testsuite" OFF)
|
|
|
|
set(LADYBIRD_CACHE_DIR "${PROJECT_BINARY_DIR}/../caches" CACHE PATH "Location of shared cache of downloaded files")
|
|
option(ENABLE_NETWORK_DOWNLOADS "Allow downloads of required files. If OFF, required files must already be present in LADYBIRD_CACHE_DIR" ON)
|
|
|
|
option(ENABLE_CLANG_PLUGINS "Enable building with the Clang plugins" OFF)
|
|
option(ENABLE_CLANG_PLUGINS_INVALID_FUNCTION_MEMBERS "Enable detecting invalid function types as members of GC-allocated objects" OFF)
|
|
|
|
if ((LINUX AND NOT ANDROID) OR BSD)
|
|
set(freedesktop_files_default ON)
|
|
else()
|
|
set(freedesktop_files_default OFF)
|
|
endif()
|
|
|
|
option(ENABLE_GUI_TARGETS "Enable building GUI targets" ON)
|
|
option(ENABLE_INSTALL_HEADERS "Enable installing headers" ON)
|
|
option(ENABLE_INSTALL_FREEDESKTOP_FILES "Enable installing .desktop and .service files" ${freedesktop_files_default})
|
|
option(LADYBIRD_ENABLE_CPPTRACE "Enable use of cpptrace as the default library for stacktraces. If not available falls back to backtrace.h" ON)
|
|
option(LADYBIRD_GENERATE_DSYM "Generate dSYM bundles for binaries and libraries (macOS only)" OFF)
|
|
option(ENABLE_CI_BASELINE_CPU "Use a baseline CPU target for improved ccache sharing" OFF)
|
|
|
|
# lto1 uses a crazy amount of RAM in static builds.
|
|
# Disable LTO for static gcc builds unless explicitly asked for.
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT BUILD_SHARED_LIBS)
|
|
set(RELEASE_LTO_DEFAULT OFF)
|
|
else()
|
|
set(RELEASE_LTO_DEFAULT ON)
|
|
endif()
|
|
|
|
option(ENABLE_ADDRESS_SANITIZER "Enable address sanitizer testing in gcc/clang" OFF)
|
|
option(ENABLE_MEMORY_SANITIZER "Enable memory sanitizer testing in gcc/clang" OFF)
|
|
option(ENABLE_FUZZERS "Build fuzzing targets" OFF)
|
|
option(ENABLE_FUZZERS_LIBFUZZER "Build fuzzers using Clang's libFuzzer" OFF)
|
|
option(ENABLE_FUZZERS_OSSFUZZ "Build OSS-Fuzz compatible fuzzers" OFF)
|
|
option(LAGOM_TOOLS_ONLY "Don't build libraries, utilities and tests, only host build tools" OFF)
|
|
option(ENABLE_LAGOM_CCACHE "Enable ccache for Lagom builds" ON)
|
|
set(LAGOM_USE_LINKER "" CACHE STRING "The linker to use (e.g. lld, mold) instead of the system default")
|
|
set(LAGOM_LINK_POOL_SIZE "" CACHE STRING "The maximum number of parallel jobs to use for linking")
|
|
option(ENABLE_LTO_FOR_RELEASE "Enable link-time optimization for release builds" ${RELEASE_LTO_DEFAULT})
|
|
option(ENABLE_LAGOM_COVERAGE_COLLECTION "Enable code coverage instrumentation for lagom binaries in clang" OFF)
|
|
|
|
if (ENABLE_FUZZERS_LIBFUZZER)
|
|
# With libfuzzer, we need to avoid a duplicate main() linker error giving false negatives
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "Type of target to use for try_compile()" FORCE)
|
|
endif()
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/lagom_install_options.cmake)
|