X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/9f94b672a5dc32da5ad01742bd4e976315a30d9c..c6ad2948bb98d42f8e0883ef82cd14cd2d5eda60:/antlr4-cpp-runtime-4.9.2-source/runtime/CMakeLists.txt diff --git a/antlr4-cpp-runtime-4.9.2-source/runtime/CMakeLists.txt b/antlr4-cpp-runtime-4.9.2-source/runtime/CMakeLists.txt new file mode 100644 index 0000000..a8503bb --- /dev/null +++ b/antlr4-cpp-runtime-4.9.2-source/runtime/CMakeLists.txt @@ -0,0 +1,143 @@ + +include(${CMAKE_ROOT}/Modules/ExternalProject.cmake) + +set(THIRDPARTY_DIR ${CMAKE_BINARY_DIR}/runtime/thirdparty) +set(UTFCPP_DIR ${THIRDPARTY_DIR}/utfcpp) +ExternalProject_Add( + utfcpp + GIT_REPOSITORY "git://github.com/nemtrif/utfcpp" + GIT_TAG "v3.1.1" + SOURCE_DIR ${UTFCPP_DIR} + UPDATE_DISCONNECTED 1 + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${UTFCPP_DIR}/install -Dgtest_force_shared_crt=ON + TEST_AFTER_INSTALL 1 + STEP_TARGETS build) + + +include_directories( + ${PROJECT_SOURCE_DIR}/runtime/src + ${PROJECT_SOURCE_DIR}/runtime/src/atn + ${PROJECT_SOURCE_DIR}/runtime/src/dfa + ${PROJECT_SOURCE_DIR}/runtime/src/misc + ${PROJECT_SOURCE_DIR}/runtime/src/support + ${PROJECT_SOURCE_DIR}/runtime/src/tree + ${PROJECT_SOURCE_DIR}/runtime/src/tree/pattern + ${PROJECT_SOURCE_DIR}/runtime/src/tree/xpath + ${UTFCPP_DIR}/install/include/utf8cpp + ${UTFCPP_DIR}/install/include/utf8cpp/utf8 +) + + +file(GLOB libantlrcpp_SRC + "${PROJECT_SOURCE_DIR}/runtime/src/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/atn/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/dfa/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/misc/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/support/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/tree/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/tree/pattern/*.cpp" + "${PROJECT_SOURCE_DIR}/runtime/src/tree/xpath/*.cpp" +) + +add_library(antlr4_shared SHARED ${libantlrcpp_SRC}) +add_library(antlr4_static STATIC ${libantlrcpp_SRC}) + +set(LIB_OUTPUT_DIR "${CMAKE_HOME_DIRECTORY}/dist") # put generated libraries here. +message(STATUS "Output libraries to ${LIB_OUTPUT_DIR}") + +# make sure 'make' works fine even if ${LIB_OUTPUT_DIR} is deleted. +add_custom_target(make_lib_output_dir ALL + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_OUTPUT_DIR} + ) + +add_dependencies(antlr4_shared make_lib_output_dir utfcpp) +add_dependencies(antlr4_static make_lib_output_dir utfcpp) + +if(CMAKE_SYSTEM_NAME MATCHES "Linux") + target_link_libraries(antlr4_shared ${UUID_LIBRARIES}) + target_link_libraries(antlr4_static ${UUID_LIBRARIES}) +elseif(APPLE) + target_link_libraries(antlr4_shared ${COREFOUNDATION_LIBRARY}) + target_link_libraries(antlr4_static ${COREFOUNDATION_LIBRARY}) +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(disabled_compile_warnings "/wd4251") +else() + set(disabled_compile_warnings "-Wno-overloaded-virtual") +endif() + + +if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + set(disabled_compile_warnings "${disabled_compile_warnings} -Wno-dollar-in-identifier-extension -Wno-four-char-constants") +elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel") + set(disabled_compile_warnings "${disabled_compile_warnings} -Wno-multichar") +endif() + +set(extra_share_compile_flags "") +set(extra_static_compile_flags "") +if(WIN32) + set(extra_share_compile_flags "-DANTLR4CPP_EXPORTS") + set(extra_static_compile_flags "-DANTLR4CPP_STATIC") +endif(WIN32) +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + if(WITH_STATIC_CRT) + target_compile_options(antlr4_shared PRIVATE "/MT$<$:d>") + target_compile_options(antlr4_static PRIVATE "/MT$<$:d>") + else() + target_compile_options(antlr4_shared PRIVATE "/MD$<$:d>") + target_compile_options(antlr4_static PRIVATE "/MD$<$:d>") + endif() +endif() + +set(static_lib_suffix "") +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(static_lib_suffix "-static") +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(extra_share_compile_flags "-DANTLR4CPP_EXPORTS -MP /wd4251") + set(extra_static_compile_flags "-DANTLR4CPP_STATIC -MP") +endif() + +set_target_properties(antlr4_shared + PROPERTIES VERSION ${ANTLR_VERSION} + SOVERSION ${ANTLR_VERSION} + OUTPUT_NAME antlr4-runtime + LIBRARY_OUTPUT_DIRECTORY ${LIB_OUTPUT_DIR} + # TODO: test in windows. DLL is treated as runtime. + # see https://cmake.org/cmake/help/v3.0/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.html + RUNTIME_OUTPUT_DIRECTORY ${LIB_OUTPUT_DIR} + ARCHIVE_OUTPUT_DIRECTORY ${LIB_OUTPUT_DIR} + COMPILE_FLAGS "${disabled_compile_warnings} ${extra_share_compile_flags}") + +set_target_properties(antlr4_static + PROPERTIES VERSION ${ANTLR_VERSION} + SOVERSION ${ANTLR_VERSION} + OUTPUT_NAME "antlr4-runtime${static_lib_suffix}" + ARCHIVE_OUTPUT_DIRECTORY ${LIB_OUTPUT_DIR} + COMPILE_FLAGS "${disabled_compile_warnings} ${extra_static_compile_flags}") + +install(TARGETS antlr4_shared + DESTINATION lib + EXPORT antlr4-targets) +install(TARGETS antlr4_static + DESTINATION lib + EXPORT antlr4-targets) + +install(DIRECTORY "${PROJECT_SOURCE_DIR}/runtime/src/" + DESTINATION "include/antlr4-runtime" + COMPONENT dev + FILES_MATCHING PATTERN "*.h" + ) + +install(FILES "${UTFCPP_DIR}/source/utf8.h" + DESTINATION "include/antlr4-runtime") +install(DIRECTORY "${UTFCPP_DIR}/source/utf8" + DESTINATION "include/antlr4-runtime" + COMPONENT dev + FILES_MATCHING PATTERN "*.h" + ) + + +