blob: 22b8f3fb11323fe570c6569f135b6fab5607250e [file] [log] [blame]
set(dir "${CMAKE_CURRENT_BINARY_DIR}")
set(properties
# property expected alias
# Compilation properties
"COMPILE_WARNING_AS_ERROR" "ON" "<SAME>"
"INTERPROCEDURAL_OPTIMIZATION" "OFF" "<SAME>"
"NO_SYSTEM_FROM_IMPORTED" "ON" "<SAME>"
"VISIBILITY_INLINES_HIDDEN" "ON" "<SAME>"
## Features
### PCH
"DISABLE_PRECOMPILE_HEADERS" "ON" "<SAME>"
"PCH_WARN_INVALID" "OFF" "<SAME>"
"PCH_INSTANTIATE_TEMPLATES" "OFF" "<SAME>"
## Platforms
### Android
"ANDROID_API" "9" "<SAME>"
"ANDROID_API_MIN" "9" "<SAME>"
"ANDROID_ARCH" "arm64-v8a" "<SAME>"
"ANDROID_ASSETS_DIRECTORIES" "${dir}" "<SAME>"
"ANDROID_JAVA_SOURCE_DIR" "${dir}" "<SAME>"
"ANDROID_STL_TYPE" "system" "<SAME>"
### macOS
"OSX_ARCHITECTURES" "arm64" "<SAME>"
### Windows
"MSVC_DEBUG_INFORMATION_FORMAT" "Embedded" "<SAME>"
"MSVC_RUNTIME_LIBRARY" "MultiThreaded" "<SAME>"
"VS_JUST_MY_CODE_DEBUGGING" "ON" "<SAME>"
### OpenWatcom
"WATCOM_RUNTIME_LIBRARY" "MultiThreaded" "<SAME>"
## Language
### CUDA
"CUDA_SEPARABLE_COMPILATION" "ON" "<SAME>"
"CUDA_ARCHITECTURES" "naive" "<SAME>"
### Fortran
"Fortran_FORMAT" "FREE" "<SAME>"
"Fortran_MODULE_DIRECTORY" "${dir}" "<SAME>"
"Fortran_COMPILER_LAUNCHER" "ccache" "<SAME>"
"Fortran_PREPROCESS" "ON" "<SAME>"
"Fortran_VISIBILITY_PRESET" "hidden" "<SAME>"
### HIP
"HIP_ARCHITECTURES" "gfx801" "<SAME>"
### ISPC
"ISPC_COMPILER_LAUNCHER" "ccache" "<SAME>"
"ISPC_HEADER_DIRECTORY" "${dir}" "<SAME>"
"ISPC_HEADER_SUFFIX" "_i.h" "<SAME>"
"ISPC_INSTRUCTION_SETS" "avx2-i32x4" "<SAME>"
### Swift
"Swift_LANGUAGE_VERSION" "2.3" "<SAME>"
"Swift_MODULE_DIRECTORY" "${dir}" "<SAME>"
### moc
"AUTOMOC" "OFF" "<SAME>"
"AUTOMOC_COMPILER_PREDEFINES" "OFF" "<SAME>"
"AUTOMOC_MACRO_NAMES" "MOC_CLASS" "<SAME>"
"AUTOMOC_MOC_OPTIONS" "-v" "<SAME>"
"AUTOMOC_PATH_PREFIX" "moc_" "<SAME>"
"AUTOMOC_EXECUTABLE" "automoc" "<SAME>"
### uic
"AUTOUIC" "OFF" "<SAME>"
"AUTOUIC_OPTIONS" "-v" "<SAME>"
"AUTOUIC_SEARCH_PATHS" "${dir}" "<SAME>"
"AUTOUIC_EXECUTABLE" "autouic" "<SAME>"
### rcc
"AUTORCC" "OFF" "<SAME>"
"AUTORCC_OPTIONS" "-v" "<SAME>"
"AUTORCC_EXECUTABLE" "autorcc" "<SAME>"
# Linking properties
"LINK_SEARCH_START_STATIC" "-Bstatic" "<SAME>"
"LINK_SEARCH_END_STATIC" "-Bdynamic" "<SAME>"
## Dependent library lookup
"MACOSX_RPATH" "@loader_path/" "<SAME>"
### Build
"BUILD_RPATH" "../lib" "<SAME>"
"BUILD_RPATH_USE_ORIGIN" "ON" "<SAME>"
"SKIP_BUILD_RPATH" "ON" "<SAME>"
"BUILD_WITH_INSTALL_RPATH" "ON" "<SAME>"
"BUILD_WITH_INSTALL_NAME_DIR" "@rpath/" "<SAME>"
### Install
"INSTALL_NAME_DIR" "@rpath/" "<SAME>"
"INSTALL_REMOVE_ENVIRONMENT_RPATH" "ON" "<SAME>"
"INSTALL_RPATH" "@rpath/" "<SAME>"
"INSTALL_RPATH_USE_LINK_PATH" "ON" "<SAME>"
## Platforms
### Android
"ANDROID_JAR_DIRECTORIES" "${dir}" "<SAME>"
"ANDROID_JAR_DEPENDENCIES" "${dir}/foo.jar" "<SAME>"
"ANDROID_NATIVE_LIB_DIRECTORIES" "${dir}" "<SAME>"
"ANDROID_NATIVE_LIB_DEPENDENCIES" "${dir}/native.a" "<SAME>"
"ANDROID_PROGUARD" "ON" "<SAME>"
"ANDROID_PROGUARD_CONFIG_PATH" "proguard.props" "<SAME>"
"ANDROID_SECURE_PROPS_PATH" "secure.props" "<SAME>"
### iOS
"IOS_INSTALL_COMBINED" "ON" "<SAME>"
### Windows
"GNUtoMS" "ON" "<SAME>"
"WIN32_EXECUTABLE" "OFF" "<SAME>"
## Languages
### C
"C_LINKER_LAUNCHER" "ccache" "<SAME>"
### C++
"CXX_LINKER_LAUNCHER" "ccache" "<SAME>"
"CXX_MODULE_STD" "ON" "<SAME>"
### CUDA
"CUDA_RESOLVE_DEVICE_SYMBOLS" "ON" "<SAME>"
"CUDA_RUNTIME_LIBRARY" "Static" "<SAME>"
### HIP
"HIP_RUNTIME_LIBRARY" "SHARED" "<SAME>"
### Objective C
"OBJC_LINKER_LAUNCHER" "ccache" "<SAME>"
### Objective C++
"OBJCXX_LINKER_LAUNCHER" "ccache" "<SAME>"
# Static analysis
## C
"C_CLANG_TIDY" "clang-tidy" "<SAME>"
"C_CLANG_TIDY_EXPORT_FIXES_DIR" "${dir}" "<SAME>"
"C_CPPLINT" "cpplint" "<SAME>"
"C_CPPCHECK" "cppcheck" "<SAME>"
"C_INCLUDE_WHAT_YOU_USE" "iwyu" "<SAME>"
## C++
"CXX_CLANG_TIDY" "clang-tidy" "<SAME>"
"CXX_CLANG_TIDY_EXPORT_FIXES_DIR" "${dir}" "<SAME>"
"CXX_CPPLINT" "cpplint" "<SAME>"
"CXX_CPPCHECK" "cppcheck" "<SAME>"
"CXX_INCLUDE_WHAT_YOU_USE" "iwyu" "<SAME>"
## Objective C
"OBJC_CLANG_TIDY" "clang-tidy" "<SAME>"
"OBJC_CLANG_TIDY_EXPORT_FIXES_DIR" "${dir}" "<SAME>"
## Objective C++
"OBJCXX_CLANG_TIDY" "clang-tidy" "<SAME>"
"OBJCXX_CLANG_TIDY_EXPORT_FIXES_DIR" "${dir}" "<SAME>"
## Linking
"LINK_WHAT_YOU_USE" "lwyu" "<SAME>"
# Build graph properties
"LINK_DEPENDS_NO_SHARED" "OFF" "<SAME>"
"UNITY_BUILD" "OFF" "<SAME>"
"UNITY_BUILD_UNIQUE_ID" "unity" "<SAME>"
"UNITY_BUILD_BATCH_SIZE" "10" "<SAME>"
"UNITY_BUILD_MODE" "GROUP" "<SAME>"
"OPTIMIZE_DEPENDENCIES" "ON" "<SAME>"
## Android
"ANDROID_ANT_ADDITIONAL_OPTIONS" "-v" "<SAME>"
"ANDROID_PROCESS_MAX" "2" "<SAME>"
"ANDROID_SKIP_ANT_STEP" "ON" "<SAME>"
## Autogen
"AUTOGEN_ORIGIN_DEPENDS" "OFF" "<SAME>"
"AUTOGEN_PARALLEL" "ON" "<SAME>"
"AUTOGEN_USE_SYSTEM_INCLUDE" "ON" "<SAME>"
## moc
"AUTOMOC_DEPEND_FILTERS" "FIRST<SEMI>SECOND" "<SAME>"
## C++
"CXX_SCAN_FOR_MODULES" "ON" "<SAME>"
## Ninja
"JOB_POOL_COMPILE" "compile_pool" "<SAME>"
"JOB_POOL_LINK" "link_pool" "<SAME>"
"JOB_POOL_PRECOMPILE_HEADER" "pch_pool" "<SAME>"
## Visual Studio
"VS_NO_COMPILE_BATCHING" "ON" "<SAME>"
"VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION" "10.0.10240.0" "<SAME>"
# Output location properties
"ARCHIVE_OUTPUT_DIRECTORY" "${dir}" "<SAME>"
"COMPILE_PDB_OUTPUT_DIRECTORY" "${dir}" "<SAME>"
"LIBRARY_OUTPUT_DIRECTORY" "${dir}" "<SAME>"
"PDB_OUTPUT_DIRECTORY" "${dir}" "<SAME>"
"RUNTIME_OUTPUT_DIRECTORY" "${dir}" "<SAME>"
# macOS bundle properties
"FRAMEWORK" "OFF" "<SAME>"
"FRAMEWORK_MULTI_CONFIG_POSTFIX" ".mcpostfix" "<SAME>"
"MACOSX_BUNDLE" "OFF" "<SAME>"
# Usage requirement properties
"LINK_INTERFACE_LIBRARIES" "c" "<SAME>"
# Metadata
"EXPORT_COMPILE_COMMANDS" "OFF" "<SAME>"
)
if (CMAKE_HOST_APPLE) # compile-guarded in CMake
if (CMAKE_GENERATOR STREQUAL "Xcode")
list(APPEND properties
# property expected alias
# Xcode properties
"XCODE_SCHEME_ADDRESS_SANITIZER" "ON" "<SAME>"
"XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN" "ON" "<SAME>"
"XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING" "ON" "<SAME>"
"XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE" "ON" "<SAME>"
"XCODE_SCHEME_THREAD_SANITIZER" "ON" "<SAME>"
"XCODE_SCHEME_THREAD_SANITIZER_STOP" "ON" "<SAME>"
"XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER" "ON" "<SAME>"
"XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP" "ON" "<SAME>"
"XCODE_SCHEME_LAUNCH_CONFIGURATION" "ON" "<SAME>"
"XCODE_SCHEME_ENABLE_GPU_API_VALIDATION" "ON" "<SAME>"
"XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION" "ON" "<SAME>"
"XCODE_SCHEME_WORKING_DIRECTORY" "ON" "<SAME>"
"XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER" "ON" "<SAME>"
"XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP" "ON" "<SAME>"
"XCODE_SCHEME_MALLOC_SCRIBBLE" "ON" "<SAME>"
"XCODE_SCHEME_MALLOC_GUARD_EDGES" "ON" "<SAME>"
"XCODE_SCHEME_GUARD_MALLOC" "ON" "<SAME>"
"XCODE_SCHEME_LAUNCH_MODE" "ON" "<SAME>"
"XCODE_SCHEME_ZOMBIE_OBJECTS" "ON" "<SAME>"
"XCODE_SCHEME_MALLOC_STACK" "ON" "<SAME>"
"XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE" "ON" "<SAME>"
"XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS" "ON" "<SAME>"
"XCODE_SCHEME_ENVIRONMENT" "ON" "<SAME>"
"XCODE_LINK_BUILD_PHASE_MODE" "BUILT_ONLY" "<SAME>"
)
endif ()
endif ()
macro (add_language_properties lang std)
list(APPEND properties
# property expected alias
"${lang}_COMPILER_LAUNCHER" "ccache" "<SAME>"
"${lang}_STANDARD" "${std}" "<SAME>"
"${lang}_STANDARD_REQUIRED" "TRUE" "<SAME>"
"${lang}_EXTENSIONS" "FALSE" "<SAME>"
"${lang}_VISIBILITY_PRESET" "hidden" "<SAME>"
)
endmacro ()
# Mock up knowing the standard flag. This doesn't actually build, so nothing
# should care at this point.
set(CMAKE_Cc_std_11_STANDARD_COMPILE_OPTION "-std=c11")
add_language_properties(C c_std_11)
add_language_properties(CXX cxx_std_11)
add_language_properties(CUDA cuda_std_11)
add_language_properties(HIP hip_std_11)
add_language_properties(OBJC c_std_99)
add_language_properties(OBJCXX cxx_std_11)
# Set up pools for properties set above.
if (CMAKE_GENERATOR MATCHES "Ninja")
set_property(GLOBAL APPEND
PROPERTY
JOB_POOLS
compile_pool=1
link_pool=1
pch_pool=1)
endif ()
prepare_target_types(can_compile_sources
EXECUTABLE SHARED STATIC MODULE OBJECT)
run_property_tests(can_compile_sources properties)
set(properties_with_defaults
# property expected alias
"PCH_WARN_INVALID" "ON" "<SAME>"
"PCH_INSTANTIATE_TEMPLATES" "ON" "<SAME>"
"ISPC_HEADER_SUFFIX" "_ispc.h" "<SAME>"
"SKIP_BUILD_RPATH" "OFF" "<SAME>"
"BUILD_WITH_INSTALL_RPATH" "OFF" "<SAME>"
"INSTALL_RPATH" "" "<SAME>"
"INSTALL_RPATH_USE_LINK_PATH" "OFF" "<SAME>"
"UNITY_BUILD_BATCH_SIZE" "8" "<SAME>"
"UNITY_BUILD_MODE" "BATCH" "<SAME>"
)
if (CMAKE_HOST_APPLE)
if (CMAKE_GENERATOR STREQUAL "Xcode")
list(APPEND properties_with_defaults
# property expected alias
"XCODE_LINK_BUILD_PHASE_MODE" "NONE" "<SAME>"
)
endif ()
endif ()
set(with_defaults 1)
run_property_tests(can_compile_sources properties_with_defaults)