wgtmac commented on code in PR #2416:
URL: https://github.com/apache/orc/pull/2416#discussion_r2387277716
##########
cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -170,41 +303,68 @@ elseif (ORC_PACKAGE_KIND STREQUAL "vcpkg")
list (APPEND ORC_SYSTEM_DEPENDENCIES Snappy)
list (APPEND ORC_INSTALL_INTERFACE_TARGETS
"$<INSTALL_INTERFACE:Snappy::snappy>")
elseif (NOT "${SNAPPY_HOME}" STREQUAL "")
- find_package (Snappy REQUIRED)
+ find_package (SnappyAlt REQUIRED)
if (ORC_PREFER_STATIC_SNAPPY AND SNAPPY_STATIC_LIB)
orc_add_resolved_library (orc_snappy ${SNAPPY_STATIC_LIB}
${SNAPPY_INCLUDE_DIR})
else ()
orc_add_resolved_library (orc_snappy ${SNAPPY_LIBRARY}
${SNAPPY_INCLUDE_DIR})
endif ()
- list (APPEND ORC_SYSTEM_DEPENDENCIES Snappy)
+ list (APPEND ORC_SYSTEM_DEPENDENCIES SnappyAlt)
list (APPEND ORC_INSTALL_INTERFACE_TARGETS
"$<INSTALL_INTERFACE:Snappy::snappy>")
- orc_provide_find_module (Snappy)
+ orc_provide_find_module (SnappyAlt)
else ()
- set(SNAPPY_HOME "${THIRDPARTY_DIR}/snappy_ep-install")
- set(SNAPPY_INCLUDE_DIR "${SNAPPY_HOME}/include")
- set(SNAPPY_STATIC_LIB_NAME
"${CMAKE_STATIC_LIBRARY_PREFIX}snappy${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(SNAPPY_STATIC_LIB "${SNAPPY_HOME}/lib/${SNAPPY_STATIC_LIB_NAME}")
- set(SNAPPY_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${SNAPPY_HOME}
- -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib
- -DSNAPPY_BUILD_BENCHMARKS=OFF)
-
- if (BUILD_POSITION_INDEPENDENT_LIB)
- set(SNAPPY_CMAKE_ARGS ${SNAPPY_CMAKE_ARGS}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON)
- endif ()
+ prepare_fetchcontent()
+
+ set(SNAPPY_BUILD_TESTS OFF)
+ set(SNAPPY_BUILD_BENCHMARKS OFF)
+ set(SNAPPY_INSTALL OFF)
- ExternalProject_Add (snappy_ep
+ fetchcontent_declare(Snappy
URL "https://github.com/google/snappy/archive/${SNAPPY_VERSION}.tar.gz"
- CMAKE_ARGS ${SNAPPY_CMAKE_ARGS} -DSNAPPY_BUILD_TESTS=OFF
- ${THIRDPARTY_LOG_OPTIONS}
- BUILD_BYPRODUCTS "${SNAPPY_STATIC_LIB}")
+ FIND_PACKAGE_ARGS
+ NAMES Snappy
+ CONFIG
+ )
+ fetchcontent_makeavailable(Snappy)
+
+ if(snappy_SOURCE_DIR)
+ message(STATUS "Using vendored snappy")
+ if(NOT TARGET Snappy::snappy)
+ add_library(Snappy::snappy INTERFACE IMPORTED)
+ target_link_libraries(Snappy::snappy INTERFACE snappy)
+ target_include_directories(Snappy::snappy INTERFACE ${snappy_SOURCE_DIR}
${snappy_BINARY_DIR})
+ endif()
- orc_add_built_library (snappy_ep orc_snappy ${SNAPPY_STATIC_LIB}
${SNAPPY_INCLUDE_DIR})
+ if(BUILD_POSITION_INDEPENDENT_LIB)
+ set_target_properties(snappy POSITION_INDEPENDENT_CODE ON)
+ endif()
+
+ if(INSTALL_VENDORED_LIBS)
+ set_target_properties(snappy PROPERTIES OUTPUT_NAME
"orc_vendored_snappy")
+
+ install(FILES ${snappy_SOURCE_DIR}/snappy-c.h DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}")
+ install(FILES ${snappy_SOURCE_DIR}/snappy-sinksource.h DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}")
+ install(FILES ${snappy_SOURCE_DIR}/snappy.h DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}")
+ install(FILES ${snappy_BINARY_DIR}/snappy-stubs-public.h DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}")
Review Comment:
We need to install it, otherwise downstream project may fail like below:
```
CMake Error at CMakeLists.txt:9 (target_link_libraries):
Cannot find source file:
/tmp/orc/include/snappy-c.h
```
The reason is that Snappy adds these 4 header files as install interface:
https://github.com/google/snappy/blob/1.2.2/CMakeLists.txt#L266
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]