MuseScore/build/cmake/SetupBuildEnvironment.cmake

138 lines
4.0 KiB
CMake

include(GetCompilerInfo)
include(GetBuildType)
set(BUILD_SHARED_LIBS OFF)
set(SHARED_LIBS_INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
set(CMAKE_UNITY_BUILD_BATCH_SIZE 12)
if (CC_IS_GCC)
message(STATUS "Using Compiler GCC ${CMAKE_CXX_COMPILER_VERSION}")
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
if (MUE_COMPILE_USE_SHARED_LIBS_IN_DEBUG AND BUILD_IS_DEBUG)
set(BUILD_SHARED_LIBS ON)
endif()
if (MUE_BUILD_ASAN)
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fsanitize=address -fno-omit-frame-pointer")
endif()
elseif(CC_IS_MSVC)
message(STATUS "Using Compiler MSVC ${CMAKE_CXX_COMPILER_VERSION}")
set(CMAKE_CXX_FLAGS "/MP /EHsc /utf-8")
set(CMAKE_C_FLAGS "/MP /utf-8")
set(CMAKE_CXX_FLAGS_DEBUG "/MT /Zi /Ob0 /Od /RTC1")
set(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 /Ob2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1")
set(CMAKE_C_FLAGS_DEBUG "/MT /Zi /Ob0 /Od /RTC1")
set(CMAKE_C_FLAGS_RELEASE "/MT /O2 /Ob2")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1")
set(CMAKE_EXE_LINKER_FLAGS "/DYNAMICBASE:NO")
add_definitions(-DWIN32)
add_definitions(-D_WINDOWS)
add_definitions(-D_UNICODE)
add_definitions(-DUNICODE)
add_definitions(-D_USE_MATH_DEFINES)
add_definitions(-DNOMINMAX)
elseif(CC_IS_MINGW)
message(STATUS "Using Compiler MINGW ${CMAKE_CXX_COMPILER_VERSION}")
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
if (MUE_COMPILE_USE_SHARED_LIBS_IN_DEBUG AND BUILD_IS_DEBUG)
set(BUILD_SHARED_LIBS ON)
endif()
# -mno-ms-bitfields see #22048
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mno-ms-bitfields")
if (NOT MUE_COMPILE_BUILD_64)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--large-address-aware")
endif()
add_definitions(-D_UNICODE)
add_definitions(-DUNICODE)
elseif(CC_IS_CLANG)
message(STATUS "Using Compiler CLANG ${CMAKE_CXX_COMPILER_VERSION}")
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
if (MUE_BUILD_ASAN)
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fsanitize=address -fno-omit-frame-pointer")
endif()
if (BUILD_IS_DEBUG)
add_definitions(-DSTRING_DEBUG_HACK)
endif()
elseif(CC_IS_EMSCRIPTEN)
message(STATUS "Using Compiler Emscripten ${CMAKE_CXX_COMPILER_VERSION}")
set(EMCC_CMAKE_TOOLCHAIN "" CACHE FILEPATH "Path to EMCC CMake Emscripten.cmake")
set(EMCC_INCLUDE_PATH "." CACHE PATH "Path to EMCC include dir")
set(EMCC_COMPILE_FLAGS "--bind -o .html --preload-file ../../files")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/public_html)
set(CMAKE_EXECUTABLE_SUFFIX ".html")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EMCC_COMPILE_FLAGS}")
set(CMAKE_TOOLCHAIN_FILE ${EMCC_CMAKE_TOOLCHAIN})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
#for QtCreator
include_directories(AFTER
${EMCC_INCLUDE_PATH}
${EMCC_INCLUDE_PATH}/libcxx
${EMCC_INCLUDE_PATH}/libc
)
else()
message(FATAL_ERROR "Unsupported Compiler CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
endif()
##
# Setup compile warnings
##
include(SetupCompileWarnings)
# Common
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE MATCHES "DEBUG") #Debug
add_definitions(-DQT_QML_DEBUG)
else() #Release
add_definitions(-DNDEBUG)
add_definitions(-DQT_NO_DEBUG)
endif()
# APPLE specific
if (OS_IS_MAC)
if (MUE_COMPILE_BUILD_MACOS_APPLE_SILICON)
set(CMAKE_OSX_ARCHITECTURES ) # leave empty, use default
else()
set(CMAKE_OSX_ARCHITECTURES x86_64)
endif()
if (CMAKE_OSX_ARCHITECTURES)
message(STATUS "Building for architecture(s) ${CMAKE_OSX_ARCHITECTURES}")
else()
message(STATUS "Building for default architecture(s)")
endif()
set(MACOSX_DEPLOYMENT_TARGET 10.14)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.14)
endif(OS_IS_MAC)