This is an automated email from the ASF dual-hosted git repository.
xinzhang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/orc.git
The following commit(s) were added to refs/heads/main by this push:
new 413141754 ORC-1690: [C++] Refactor CMake to use imported thirdtparty
libraries (#1894)
413141754 is described below
commit 41314175449054a299066c3042ad9f0e7efab5d9
Author: Gang Wu <[email protected]>
AuthorDate: Wed Apr 17 23:37:46 2024 +0800
ORC-1690: [C++] Refactor CMake to use imported thirdtparty libraries (#1894)
---
CMakeLists.txt | 8 --
c++/CMakeLists.txt | 5 -
c++/src/CMakeLists.txt | 29 +++-
c++/test/CMakeLists.txt | 15 ++-
cmake_modules/ThirdpartyToolchain.cmake | 225 ++++++++++++--------------------
tools/src/CMakeLists.txt | 40 +++---
tools/test/CMakeLists.txt | 16 +--
7 files changed, 139 insertions(+), 199 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63e144b93..294179bea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -153,14 +153,6 @@ elseif (MSVC)
set (WARN_FLAGS "${WARN_FLAGS} -wd4146") # unary minus operator applied to
unsigned type, result still unsigned
endif ()
-if (BUILD_CPP_ENABLE_METRICS)
- message(STATUS "Enable the metrics collection")
- add_compile_definitions(ENABLE_METRICS=1)
-else ()
- message(STATUS "Disable the metrics collection")
- add_compile_definitions(ENABLE_METRICS=0)
-endif ()
-
enable_testing()
INCLUDE(CheckSourceCompiles)
diff --git a/c++/CMakeLists.txt b/c++/CMakeLists.txt
index 449bd10f3..ec06458db 100644
--- a/c++/CMakeLists.txt
+++ b/c++/CMakeLists.txt
@@ -15,11 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-include_directories (
- ${CMAKE_CURRENT_BINARY_DIR}/include
- "include"
- )
-
add_subdirectory(include)
add_subdirectory(src)
diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt
index 33ad58484..af69c7f62 100644
--- a/c++/src/CMakeLists.txt
+++ b/c++/src/CMakeLists.txt
@@ -138,12 +138,6 @@ configure_file (
"${CMAKE_CURRENT_BINARY_DIR}/Adaptor.hh"
)
-include_directories (
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${LIBHDFSPP_INCLUDE_DIR}
- )
-
add_custom_command(OUTPUT orc_proto.pb.h orc_proto.pb.cc
COMMAND ${PROTOBUF_EXECUTABLE}
-I
../../orc-format_ep-prefix/src/orc-format_ep/src/main/proto/orc/proto
@@ -197,7 +191,6 @@ set(SOURCE_FILES
if(BUILD_LIBHDFSPP)
set(SOURCE_FILES ${SOURCE_FILES} OrcHdfsFile.cc)
- add_definitions(-DBUILD_LIBHDFSPP)
endif(BUILD_LIBHDFSPP)
if(BUILD_ENABLE_AVX512)
@@ -217,6 +210,28 @@ target_link_libraries (orc
${LIBHDFSPP_LIBRARIES}
)
+target_include_directories (orc
+ PUBLIC
+ ${CMAKE_SOURCE_DIR}/c++/include
+ ${CMAKE_BINARY_DIR}/c++/include
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${LIBHDFSPP_INCLUDE_DIR}
+)
+
+if (BUILD_LIBHDFSPP)
+ target_compile_definitions(orc PUBLIC -DBUILD_LIBHDFSPP)
+endif (BUILD_LIBHDFSPP)
+
+if (BUILD_CPP_ENABLE_METRICS)
+ message(STATUS "Enable the metrics collection")
+ target_compile_definitions(orc PUBLIC ENABLE_METRICS=1)
+else ()
+ message(STATUS "Disable the metrics collection")
+ target_compile_definitions(orc PUBLIC ENABLE_METRICS=0)
+endif ()
+
add_dependencies(orc orc-format_ep)
install(TARGETS orc DESTINATION lib)
diff --git a/c++/test/CMakeLists.txt b/c++/test/CMakeLists.txt
index b04055366..e6a1491d4 100644
--- a/c++/test/CMakeLists.txt
+++ b/c++/test/CMakeLists.txt
@@ -15,14 +15,15 @@
# specific language governing permissions and limitations
# under the License.
-include_directories(
- ${PROJECT_SOURCE_DIR}/c++/src
- ${PROJECT_BINARY_DIR}/c++/include
- ${PROJECT_BINARY_DIR}/c++/src
-)
-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX17_FLAGS} ${WARN_FLAGS}")
+add_library (orc-test-include INTERFACE)
+target_include_directories (orc-test-include INTERFACE
+ ${CMAKE_SOURCE_DIR}/c++/src
+ ${CMAKE_BINARY_DIR}/c++/include
+ ${CMAKE_BINARY_DIR}/c++/src
+)
+
if(BUILD_ENABLE_AVX512)
set(SIMD_TEST_SRCS TestRleVectorDecoder.cc)
endif(BUILD_ENABLE_AVX512)
@@ -73,6 +74,7 @@ target_link_libraries (orc-test
orc::zlib
orc::gtest
orc::gmock
+ orc-test-include
)
add_executable (create-test-files
@@ -82,6 +84,7 @@ add_executable (create-test-files
target_link_libraries (create-test-files
orc
orc::protobuf
+ orc-test-include
)
if (TEST_VALGRIND_MEMCHECK)
diff --git a/cmake_modules/ThirdpartyToolchain.cmake
b/cmake_modules/ThirdpartyToolchain.cmake
index ec33193d7..c3d414e89 100644
--- a/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cmake_modules/ThirdpartyToolchain.cmake
@@ -69,6 +69,27 @@ if (DEFINED ENV{GTEST_HOME})
set (GTEST_HOME "$ENV{GTEST_HOME}")
endif ()
+# ----------------------------------------------------------------------
+# Macros for adding third-party libraries
+macro (add_resolved_library target_name link_lib include_dir)
+ add_library (${target_name} INTERFACE IMPORTED)
+ target_link_libraries (${target_name} INTERFACE ${link_lib})
+ target_include_directories (${target_name} SYSTEM INTERFACE ${include_dir})
+endmacro ()
+
+macro (add_built_library external_project_name target_name link_lib
include_dir)
+ file (MAKE_DIRECTORY "${include_dir}")
+
+ add_library (${target_name} STATIC IMPORTED)
+ set_target_properties (${target_name} PROPERTIES IMPORTED_LOCATION
"${link_lib}")
+ target_include_directories (${target_name} BEFORE INTERFACE "${include_dir}")
+
+ add_dependencies (${target_name} ${external_project_name})
+ if (INSTALL_VENDORED_LIBS)
+ install (FILES "${link_lib}" DESTINATION "lib")
+ endif ()
+endmacro ()
+
# ----------------------------------------------------------------------
# ORC Format
ExternalProject_Add (orc-format_ep
@@ -83,10 +104,16 @@ ExternalProject_Add (orc-format_ep
# ----------------------------------------------------------------------
# Snappy
-
-if (NOT "${SNAPPY_HOME}" STREQUAL "" OR ORC_PACKAGE_KIND STREQUAL "conan")
+if (ORC_PACKAGE_KIND STREQUAL "conan")
+ find_package (Snappy REQUIRED CONFIG)
+ add_resolved_library (orc_snappy ${Snappy_LIBRARIES} ${Snappy_INCLUDE_DIR})
+elseif (NOT "${SNAPPY_HOME}" STREQUAL "")
find_package (Snappy REQUIRED)
- set(SNAPPY_VENDORED FALSE)
+ if (ORC_PREFER_STATIC_SNAPPY AND ${SNAPPY_STATIC_LIB})
+ add_resolved_library (orc_snappy ${SNAPPY_STATIC_LIB}
${SNAPPY_INCLUDE_DIR})
+ else ()
+ add_resolved_library (orc_snappy ${SNAPPY_LIBRARY} ${SNAPPY_INCLUDE_DIR})
+ endif ()
else ()
set(SNAPPY_HOME "${THIRDPARTY_DIR}/snappy_ep-install")
set(SNAPPY_INCLUDE_DIR "${SNAPPY_HOME}/include")
@@ -104,39 +131,24 @@ else ()
${THIRDPARTY_LOG_OPTIONS}
BUILD_BYPRODUCTS "${SNAPPY_STATIC_LIB}")
- set(SNAPPY_LIBRARY ${SNAPPY_STATIC_LIB})
- set(SNAPPY_VENDORED TRUE)
+ add_built_library (snappy_ep orc_snappy ${SNAPPY_STATIC_LIB}
${SNAPPY_INCLUDE_DIR})
endif ()
-add_library (orc_snappy INTERFACE)
add_library (orc::snappy ALIAS orc_snappy)
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_link_libraries(orc_snappy INTERFACE ${Snappy_LIBRARIES})
-elseif (ORC_PREFER_STATIC_SNAPPY AND ${SNAPPY_STATIC_LIB})
- target_link_libraries(orc_snappy INTERFACE ${SNAPPY_STATIC_LIB})
-else ()
- target_link_libraries(orc_snappy INTERFACE ${SNAPPY_LIBRARY})
-endif ()
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_include_directories (orc_snappy SYSTEM INTERFACE
${Snappy_INCLUDE_DIR})
-else()
- target_include_directories (orc_snappy SYSTEM INTERFACE
${SNAPPY_INCLUDE_DIR})
-endif ()
-
-if (SNAPPY_VENDORED)
- add_dependencies (orc_snappy snappy_ep)
- if (INSTALL_VENDORED_LIBS)
- install(FILES "${SNAPPY_STATIC_LIB}"
- DESTINATION "lib")
- endif ()
-endif ()
# ----------------------------------------------------------------------
# ZLIB
-if (NOT "${ZLIB_HOME}" STREQUAL "" OR ORC_PACKAGE_KIND STREQUAL "conan")
+if (ORC_PACKAGE_KIND STREQUAL "conan")
+ find_package (ZLIB REQUIRED CONFIG)
+ add_resolved_library (orc_zlib ${ZLIB_LIBRARIES} ${ZLIB_INCLUDE_DIR})
+elseif (NOT "${ZLIB_HOME}" STREQUAL "")
find_package (ZLIB REQUIRED)
- set(ZLIB_VENDORED FALSE)
+ if (ORC_PREFER_STATIC_ZLIB AND ${ZLIB_STATIC_LIB})
+ add_resolved_library (orc_zlib ${ZLIB_STATIC_LIB} ${ZLIB_INCLUDE_DIR})
+ else ()
+ add_resolved_library (orc_zlib ${ZLIB_LIBRARY} ${ZLIB_INCLUDE_DIR})
+ endif ()
else ()
set(ZLIB_PREFIX "${THIRDPARTY_DIR}/zlib_ep-install")
set(ZLIB_INCLUDE_DIR "${ZLIB_PREFIX}/include")
@@ -162,35 +174,24 @@ else ()
${THIRDPARTY_LOG_OPTIONS}
BUILD_BYPRODUCTS "${ZLIB_STATIC_LIB}")
- set(ZLIB_LIBRARY ${ZLIB_STATIC_LIB})
- set(ZLIB_VENDORED TRUE)
+ add_built_library (zlib_ep orc_zlib ${ZLIB_STATIC_LIB} ${ZLIB_INCLUDE_DIR})
endif ()
-add_library (orc_zlib INTERFACE)
add_library (orc::zlib ALIAS orc_zlib)
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_link_libraries (orc_zlib INTERFACE ${ZLIB_LIBRARIES})
-elseif (ORC_PREFER_STATIC_ZLIB AND ${ZLIB_STATIC_LIB})
- target_link_libraries (orc_zlib INTERFACE ${ZLIB_STATIC_LIB})
-else ()
- target_link_libraries (orc_zlib INTERFACE ${ZLIB_LIBRARY})
-endif ()
-target_include_directories (orc_zlib SYSTEM INTERFACE ${ZLIB_INCLUDE_DIR})
-
-if (ZLIB_VENDORED)
- add_dependencies (orc_zlib zlib_ep)
- if (INSTALL_VENDORED_LIBS)
- install(FILES "${ZLIB_STATIC_LIB}"
- DESTINATION "lib")
- endif ()
-endif ()
# ----------------------------------------------------------------------
# Zstd
-if (NOT "${ZSTD_HOME}" STREQUAL "" OR ORC_PACKAGE_KIND STREQUAL "conan")
+if (ORC_PACKAGE_KIND STREQUAL "conan")
+ find_package (ZSTD REQUIRED CONFIG)
+ add_resolved_library (orc_zstd ${zstd_LIBRARIES} ${zstd_INCLUDE_DIR})
+elseif (NOT "${ZSTD_HOME}" STREQUAL "")
find_package (ZSTD REQUIRED)
- set(ZSTD_VENDORED FALSE)
+ if (ORC_PREFER_STATIC_ZSTD AND ${ZSTD_STATIC_LIB})
+ add_resolved_library (orc_zstd ${ZSTD_STATIC_LIB} ${ZSTD_INCLUDE_DIR})
+ else ()
+ add_resolved_library (orc_zstd ${ZSTD_LIBRARY} ${ZSTD_INCLUDE_DIR})
+ endif ()
else ()
set(ZSTD_HOME "${THIRDPARTY_DIR}/zstd_ep-install")
set(ZSTD_INCLUDE_DIR "${ZSTD_HOME}/include")
@@ -223,39 +224,23 @@ else ()
${THIRDPARTY_LOG_OPTIONS}
BUILD_BYPRODUCTS ${ZSTD_STATIC_LIB})
- set(ZSTD_LIBRARY ${ZSTD_STATIC_LIB})
- set(ZSTD_VENDORED TRUE)
+ add_built_library (zstd_ep orc_zstd ${ZSTD_STATIC_LIB} ${ZSTD_INCLUDE_DIR})
endif ()
-add_library (orc_zstd INTERFACE)
add_library (orc::zstd ALIAS orc_zstd)
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_link_libraries (orc_zstd INTERFACE ${zstd_LIBRARIES})
-elseif (ORC_PREFER_STATIC_ZSTD AND ${ZSTD_STATIC_LIB})
- target_link_libraries (orc_zstd INTERFACE ${ZSTD_STATIC_LIB})
-else ()
- target_link_libraries (orc_zstd INTERFACE ${ZSTD_LIBRARY})
-endif ()
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_include_directories (orc_zstd SYSTEM INTERFACE ${zstd_INCLUDE_DIR})
-else()
- target_include_directories (orc_zstd SYSTEM INTERFACE ${ZSTD_INCLUDE_DIR})
-endif ()
-
-if (ZSTD_VENDORED)
- add_dependencies (orc_zstd zstd_ep)
- if (INSTALL_VENDORED_LIBS)
- install(FILES "${ZSTD_STATIC_LIB}"
- DESTINATION "lib")
- endif ()
-endif ()
# ----------------------------------------------------------------------
# LZ4
-
-if (NOT "${LZ4_HOME}" STREQUAL "" OR ORC_PACKAGE_KIND STREQUAL "conan")
+if (ORC_PACKAGE_KIND STREQUAL "conan")
+ find_package (LZ4 REQUIRED CONFIG)
+ add_resolved_library (orc_lz4 ${lz4_LIBRARIES} ${lz4_INCLUDE_DIR})
+elseif (NOT "${LZ4_HOME}" STREQUAL "")
find_package (LZ4 REQUIRED)
- set(LZ4_VENDORED FALSE)
+ if (ORC_PREFER_STATIC_LZ4 AND ${LZ4_STATIC_LIB})
+ add_resolved_library (orc_lz4 ${LZ4_STATIC_LIB} ${LZ4_INCLUDE_DIR})
+ else ()
+ add_resolved_library (orc_lz4 ${LZ4_LIBRARY} ${LZ4_INCLUDE_DIR})
+ endif ()
else ()
set(LZ4_PREFIX "${THIRDPARTY_DIR}/lz4_ep-install")
set(LZ4_INCLUDE_DIR "${LZ4_PREFIX}/include")
@@ -281,32 +266,10 @@ else ()
${THIRDPARTY_LOG_OPTIONS}
BUILD_BYPRODUCTS ${LZ4_STATIC_LIB})
- set(LZ4_LIBRARY ${LZ4_STATIC_LIB})
- set(LZ4_VENDORED TRUE)
+ add_built_library (lz4_ep orc_lz4 ${LZ4_STATIC_LIB} ${LZ4_INCLUDE_DIR})
endif ()
-add_library (orc_lz4 INTERFACE)
add_library (orc::lz4 ALIAS orc_lz4)
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_link_libraries (orc_lz4 INTERFACE ${lz4_LIBRARIES})
-elseif (ORC_PREFER_STATIC_LZ4 AND ${LZ4_STATIC_LIB})
- target_link_libraries (orc_lz4 INTERFACE ${LZ4_STATIC_LIB})
-else ()
- target_link_libraries (orc_lz4 INTERFACE ${LZ4_LIBRARY})
-endif ()
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_include_directories (orc_lz4 SYSTEM INTERFACE ${lz4_INCLUDE_DIR})
-else()
- target_include_directories (orc_lz4 SYSTEM INTERFACE ${LZ4_INCLUDE_DIR})
-endif ()
-
-if (LZ4_VENDORED)
- add_dependencies (orc_lz4 lz4_ep)
- if (INSTALL_VENDORED_LIBS)
- install(FILES "${LZ4_STATIC_LIB}"
- DESTINATION "lib")
- endif ()
-endif ()
# ----------------------------------------------------------------------
# IANA - Time Zone Database
@@ -414,9 +377,23 @@ endif ()
# ----------------------------------------------------------------------
# Protobuf
-if (NOT "${PROTOBUF_HOME}" STREQUAL "" OR ORC_PACKAGE_KIND STREQUAL "conan")
+if (ORC_PACKAGE_KIND STREQUAL "conan")
+ find_package (Protobuf REQUIRED CONFIG)
+ add_resolved_library (orc_protobuf ${protobuf_LIBRARIES}
${protobuf_INCLUDE_DIR})
+elseif (NOT "${PROTOBUF_HOME}" STREQUAL "")
find_package (Protobuf REQUIRED)
- set(PROTOBUF_VENDORED FALSE)
+
+ if (ORC_PREFER_STATIC_PROTOBUF AND ${PROTOBUF_STATIC_LIB})
+ add_resolved_library (orc_protobuf ${PROTOBUF_STATIC_LIB}
${PROTOBUF_INCLUDE_DIR})
+ else ()
+ add_resolved_library (orc_protobuf ${PROTOBUF_LIBRARY}
${PROTOBUF_INCLUDE_DIR})
+ endif ()
+
+ if (ORC_PREFER_STATIC_PROTOBUF AND ${PROTOC_STATIC_LIB})
+ add_resolved_library (orc_protoc ${PROTOC_STATIC_LIB}
${PROTOBUF_INCLUDE_DIR})
+ else ()
+ add_resolved_library (orc_protoc ${PROTOC_LIBRARY} ${PROTOBUF_INCLUDE_DIR})
+ endif ()
else ()
set(PROTOBUF_PREFIX "${THIRDPARTY_DIR}/protobuf_ep-install")
set(PROTOBUF_INCLUDE_DIR "${PROTOBUF_PREFIX}/include")
@@ -453,45 +430,13 @@ else ()
${THIRDPARTY_LOG_OPTIONS}
BUILD_BYPRODUCTS "${PROTOBUF_STATIC_LIB}" "${PROTOC_STATIC_LIB}")
- set(PROTOBUF_LIBRARY ${PROTOBUF_STATIC_LIB})
- set(PROTOC_LIBRARY ${PROTOC_STATIC_LIB})
- set(PROTOBUF_VENDORED TRUE)
+ add_built_library (protobuf_ep orc_protobuf ${PROTOBUF_STATIC_LIB}
${PROTOBUF_INCLUDE_DIR})
+ add_built_library (protobuf_ep orc_protoc ${PROTOC_STATIC_LIB}
${PROTOBUF_INCLUDE_DIR})
endif ()
-add_library (orc_protobuf INTERFACE)
add_library (orc::protobuf ALIAS orc_protobuf)
-add_library (orc_protoc INTERFACE)
-add_library (orc::protoc ALIAS orc_protoc)
-
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_link_libraries (orc_protobuf INTERFACE ${protobuf_LIBRARIES})
-elseif (ORC_PREFER_STATIC_PROTOBUF AND ${PROTOBUF_STATIC_LIB})
- target_link_libraries (orc_protobuf INTERFACE ${PROTOBUF_STATIC_LIB})
-else ()
- target_link_libraries (orc_protobuf INTERFACE ${PROTOBUF_LIBRARY})
-endif()
-if (ORC_PACKAGE_KIND STREQUAL "conan")
- target_include_directories (orc_protobuf SYSTEM INTERFACE
${protobuf_INCLUDE_DIR})
-else ()
- target_include_directories (orc_protobuf SYSTEM INTERFACE
${PROTOBUF_INCLUDE_DIR})
-endif ()
-
if (NOT ORC_PACKAGE_KIND STREQUAL "conan")
- if (ORC_PREFER_STATIC_PROTOBUF AND ${PROTOC_STATIC_LIB})
- target_link_libraries (orc_protoc INTERFACE ${PROTOC_STATIC_LIB})
- else ()
- target_link_libraries (orc_protoc INTERFACE ${PROTOC_LIBRARY})
- endif()
- target_include_directories (orc_protoc SYSTEM INTERFACE
${PROTOBUF_INCLUDE_DIR})
-endif()
-
-if (PROTOBUF_VENDORED)
- add_dependencies (orc_protoc protobuf_ep)
- add_dependencies (orc_protobuf protobuf_ep)
- if (INSTALL_VENDORED_LIBS)
- install(FILES "${PROTOBUF_STATIC_LIB}" "${PROTOC_STATIC_LIB}"
- DESTINATION "lib")
- endif ()
+ add_library (orc::protoc ALIAS orc_protoc)
endif ()
# ----------------------------------------------------------------------
@@ -536,15 +481,7 @@ if(BUILD_LIBHDFSPP)
BUILD_BYPRODUCTS "${LIBHDFSPP_STATIC_LIB}"
CMAKE_ARGS ${LIBHDFSPP_CMAKE_ARGS})
- include_directories (SYSTEM ${LIBHDFSPP_INCLUDE_DIR})
-
- add_library (libhdfspp STATIC IMPORTED)
- set_target_properties (libhdfspp PROPERTIES IMPORTED_LOCATION
${LIBHDFSPP_STATIC_LIB})
- add_dependencies (libhdfspp libhdfspp_ep)
- if (INSTALL_VENDORED_LIBS)
- install(FILES "${LIBHDFSPP_STATIC_LIB}"
- DESTINATION "lib")
- endif ()
+ add_built_library(libhdfspp_ep libhdfspp ${LIBHDFSPP_STATIC_LIB}
${LIBHDFSPP_INCLUDE_DIR})
set (LIBHDFSPP_LIBRARIES
libhdfspp
diff --git a/tools/src/CMakeLists.txt b/tools/src/CMakeLists.txt
index 3863c408e..32d6eee3d 100644
--- a/tools/src/CMakeLists.txt
+++ b/tools/src/CMakeLists.txt
@@ -34,23 +34,27 @@
# executable can just be removed, as it looks like it was written for testing
# alone.
-include_directories (
- ${PROJECT_SOURCE_DIR}/c++/include
- ${PROJECT_BINARY_DIR}/c++/include
- ${PROJECT_SOURCE_DIR}/c++/src
- ${PROJECT_BINARY_DIR}/c++/src
- )
-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g ${CXX17_FLAGS} ${WARN_FLAGS}")
+add_library (orc-tools-common INTERFACE)
+target_include_directories (orc-tools-common INTERFACE
+ ${CMAKE_SOURCE_DIR}/c++/include
+ ${CMAKE_BINARY_DIR}/c++/include
+ ${CMAKE_SOURCE_DIR}/c++/src
+ ${CMAKE_BINARY_DIR}/c++/src
+)
+target_link_libraries (orc-tools-common INTERFACE
+ orc
+ ${CMAKE_THREAD_LIBS_INIT}
+)
+
add_executable (orc-contents
FileContents.cc
ToolsHelper.cc
)
target_link_libraries (orc-contents
- orc
- ${CMAKE_THREAD_LIBS_INIT}
+ orc-tools-common
)
add_executable (orc-scan
@@ -59,8 +63,7 @@ add_executable (orc-scan
)
target_link_libraries (orc-scan
- orc
- ${CMAKE_THREAD_LIBS_INIT}
+ orc-tools-common
)
add_executable (orc-metadata
@@ -69,9 +72,8 @@ add_executable (orc-metadata
)
target_link_libraries (orc-metadata
- orc
+ orc-tools-common
orc::protobuf
- ${CMAKE_THREAD_LIBS_INIT}
)
add_executable (orc-statistics
@@ -79,8 +81,7 @@ target_link_libraries (orc-metadata
)
target_link_libraries (orc-statistics
- orc
- ${CMAKE_THREAD_LIBS_INIT}
+ orc-tools-common
)
add_executable (orc-memory
@@ -89,8 +90,7 @@ add_executable (orc-memory
)
target_link_libraries (orc-memory
- orc
- ${CMAKE_THREAD_LIBS_INIT}
+ orc-tools-common
)
add_executable (timezone-dump
@@ -98,8 +98,7 @@ add_executable (timezone-dump
)
target_link_libraries (timezone-dump
- orc
- ${CMAKE_THREAD_LIBS_INIT}
+ orc-tools-common
)
add_executable (csv-import
@@ -107,8 +106,7 @@ add_executable (csv-import
)
target_link_libraries (csv-import
- orc
- ${CMAKE_THREAD_LIBS_INIT}
+ orc-tools-common
)
set(CPP_TOOL_NAMES
diff --git a/tools/test/CMakeLists.txt b/tools/test/CMakeLists.txt
index 5cd55fed3..6e0c6b20b 100644
--- a/tools/test/CMakeLists.txt
+++ b/tools/test/CMakeLists.txt
@@ -15,14 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-include_directories(
- ${PROJECT_SOURCE_DIR}/c++/include
- ${PROJECT_SOURCE_DIR}/c++/src
- ${PROJECT_SOURCE_DIR}/tools-c++/src
- ${PROJECT_BINARY_DIR}/c++/include
- ${PROJECT_BINARY_DIR}/c++/src
-)
-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX17_FLAGS} ${WARN_FLAGS}")
add_executable (tool-test
@@ -45,6 +37,14 @@ target_link_libraries (tool-test
orc::gmock
)
+target_include_directories(tool-test PRIVATE
+ ${CMAKE_SOURCE_DIR}/c++/include
+ ${CMAKE_SOURCE_DIR}/c++/src
+ ${CMAKE_SOURCE_DIR}/tools-c++/src
+ ${CMAKE_BINARY_DIR}/c++/include
+ ${CMAKE_BINARY_DIR}/c++/src
+)
+
add_dependencies(tool-test tool-set)
if (TEST_VALGRIND_MEMCHECK)