diff --git a/runtime/Cpp/CMakeLists.txt b/runtime/Cpp/CMakeLists.txt index 9937fca71b..8214b683f8 100644 --- a/runtime/Cpp/CMakeLists.txt +++ b/runtime/Cpp/CMakeLists.txt @@ -3,13 +3,6 @@ cmake_minimum_required (VERSION 3.15) # 3.14 needed because of FetchContent # 3.15 needed to avid spew of warnings related to overriding cl command line flags -cmake_policy(SET CMP0091 NEW) # Enable use of CMAKE_MSVC_RUNTIME_LIBRARY -if(WITH_STATIC_CRT) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") -else() - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") -endif(WITH_STATIC_CRT) - enable_testing() # Detect build type, fallback to release and throw a warning if use didn't specify any @@ -33,6 +26,13 @@ option(WITH_LIBCXX "Building with clang++ and libc++(in Linux). To enable with: option(WITH_STATIC_CRT "(Visual C++) Enable to statically link CRT, which avoids requiring users to install the redistribution package. To disable with: -DWITH_STATIC_CRT=Off" On) option(DISABLE_WARNINGS "Suppress compiler warnings for all built ANTLR targets" OFF) + +cmake_policy(SET CMP0091 NEW) # Enable use of CMAKE_MSVC_RUNTIME_LIBRARY +if(WITH_STATIC_CRT) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +else() + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") +endif(WITH_STATIC_CRT) project(LIBANTLR4) @@ -76,7 +76,7 @@ if(WITH_DEMO) endif() endif(WITH_DEMO) -if(MSVC_VERSION) +if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC") set(MY_CXX_WARNING_FLAGS " /W4") if(DISABLE_WARNINGS) @@ -111,7 +111,8 @@ else() endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_WARNING_FLAGS}") -if(MSVC_VERSION) + +if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MP ${MY_CXX_WARNING_FLAGS}") set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /O1 /Oi /Ob2 /Gy /MP /DNDEBUG ${MY_CXX_WARNING_FLAGS}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /Oi /Ob2 /Gy /MP /DNDEBUG ${MY_CXX_WARNING_FLGAS}") diff --git a/runtime/Cpp/runtime/CMakeLists.txt b/runtime/Cpp/runtime/CMakeLists.txt index 6237550713..17e93d6a77 100644 --- a/runtime/Cpp/runtime/CMakeLists.txt +++ b/runtime/Cpp/runtime/CMakeLists.txt @@ -87,12 +87,14 @@ set(extra_share_compile_flags "") set(extra_static_compile_flags "") set(static_lib_suffix "") -if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") +if (WIN32) set(static_lib_suffix "-static") target_compile_definitions(antlr4_shared PUBLIC ANTLR4CPP_EXPORTS) target_compile_definitions(antlr4_static PUBLIC ANTLR4CPP_STATIC) - set(extra_share_compile_flags "-MP /wd4251") - set(extra_static_compile_flags "-MP") + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC") + set(extra_share_compile_flags "-MP /wd4251") + set(extra_static_compile_flags "-MP") + endif() endif() set_target_properties(antlr4_shared @@ -108,19 +110,21 @@ set_target_properties(antlr4_static COMPILE_PDB_NAME "antlr4-runtime${static_lib_suffix}" COMPILE_FLAGS "${disabled_compile_warnings} ${extra_static_compile_flags}") -# Copy the generated binaries to dist folder (required by test suite) -add_custom_command( - TARGET antlr4_shared - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_HOME_DIRECTORY}/dist - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_HOME_DIRECTORY}/dist - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_HOME_DIRECTORY}/dist) - -add_custom_command( - TARGET antlr4_static - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_HOME_DIRECTORY}/dist - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_HOME_DIRECTORY}/dist) +if (ANTLR_BUILD_CPP_TESTS) + # Copy the generated binaries to dist folder (required by test suite) + add_custom_command( + TARGET antlr4_shared + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_HOME_DIRECTORY}/dist + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_HOME_DIRECTORY}/dist + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_HOME_DIRECTORY}/dist) + + add_custom_command( + TARGET antlr4_static + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_HOME_DIRECTORY}/dist + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_HOME_DIRECTORY}/dist) +endif() install(TARGETS antlr4_shared EXPORT antlr4-targets