diff --git a/contributors.txt b/contributors.txt index cfb17f41d..fdc21aa6f 100644 --- a/contributors.txt +++ b/contributors.txt @@ -286,8 +286,10 @@ YYYY/MM/DD, github id, Full name, email 2020/12/03, electrum, David Phillips, david@acz.org 2021/01/25, l215884529, Qiheng Liu, 13607681+l215884529@users.noreply.github.com 2021/02/02, tsotnikov, Taras Sotnikov, taras.sotnikov@gmail.com +2021/02/10, jirislaby, Jiri Slaby, jirislaby@gmail.com 2021/02/21, namasikanam, Xingyu Xie, namasikanam@gmail.com 2021/02/27, khmarbaise, Karl Heinz Marbaise, github@soebes.com 2021/03/02, hackeris 2021/03/03, xTachyon, Damian Andrei, xTachyon@users.noreply.github.com 2021/04/08, bigerl, Alexander Bigerl, bigerl@mail.upb.de +2021/04/07, b1f6c1c4, Jinzheng Tu, b1f6c1c4@gmail.com \ No newline at end of file diff --git a/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake b/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake index 4d037cf50..18adff3bb 100644 --- a/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake +++ b/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake @@ -112,7 +112,7 @@ else() EXCLUDE_FROM_ALL 1) endif() -# Seperate build step as rarely people want both +# Separate build step as rarely people want both set(ANTLR4_BUILD_DIR ${ANTLR4_ROOT}) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14.0") # CMake 3.14 builds in above's SOURCE_SUBDIR when BUILD_IN_SOURCE is true diff --git a/runtime/Cpp/runtime/CMakeLists.txt b/runtime/Cpp/runtime/CMakeLists.txt index 7979e2a4e..78fbf7d25 100644 --- a/runtime/Cpp/runtime/CMakeLists.txt +++ b/runtime/Cpp/runtime/CMakeLists.txt @@ -1,4 +1,3 @@ - include(${CMAKE_ROOT}/Modules/ExternalProject.cmake) set(THIRDPARTY_DIR ${CMAKE_BINARY_DIR}/runtime/thirdparty) @@ -12,7 +11,6 @@ ExternalProject_Add( CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${UTFCPP_DIR}/install -DUTF8_TESTS=off -DUTF8_SAMPLES=off STEP_TARGETS build) - include_directories( ${PROJECT_SOURCE_DIR}/runtime/src ${PROJECT_SOURCE_DIR}/runtime/src/atn @@ -22,8 +20,6 @@ include_directories( ${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 ) @@ -49,8 +45,49 @@ 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) +add_dependencies(antlr4_shared make_lib_output_dir) +add_dependencies(antlr4_static make_lib_output_dir) + +find_package(utf8cpp QUIET) + +set(INSTALL_utf8cpp FALSE) + +if (utf8cpp_FOUND) + target_link_libraries(antlr4_shared utf8cpp) + target_link_libraries(antlr4_static utf8cpp) +else() + + # older utf8cpp doesn't define the package above + find_path(utf8cpp_HEADER utf8.h + PATH_SUFFIXES utf8cpp + ) + + if (utf8cpp_HEADER) + include_directories(${utf8cpp_HEADER}) + else() + include(${CMAKE_ROOT}/Modules/ExternalProject.cmake) + set(THIRDPARTY_DIR ${CMAKE_BINARY_DIR}/runtime/thirdparty) + set(UTFCPP_DIR ${THIRDPARTY_DIR}/utfcpp) + ExternalProject_Add( + utf8cpp + 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( + ${UTFCPP_DIR}/install/include/utf8cpp + ${UTFCPP_DIR}/install/include/utf8cpp/utf8 + ) + + add_dependencies(antlr4_shared utf8cpp) + add_dependencies(antlr4_static utf8cpp) + set(INSTALL_utf8cpp TRUE) + endif() +endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux") target_link_libraries(antlr4_shared ${UUID_LIBRARIES}) @@ -130,13 +167,15 @@ install(DIRECTORY "${PROJECT_SOURCE_DIR}/runtime/src/" 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" - ) +if (INSTALL_utf8cpp) + 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" + ) +endif()