Skip to content

Commit

Permalink
Fold pdal_util into pdalcpp and no longer maintain a separate library (
Browse files Browse the repository at this point in the history
…#4139)

* Fold pdal_util into pdalcpp and no longer maintain a separate library

* lint

* need fPIC

* bump examples versions

* build examples in Release mode

* cache PDAL_PLUGIN_INSTALL_PATH as a PATH variable so we get proper escaping when substituting with CMake

* make externals private

* WINSOCK_LIBRARY needed in INTERFACE
  • Loading branch information
hobu committed Aug 21, 2023
1 parent e25db49 commit a3faa03
Show file tree
Hide file tree
Showing 12 changed files with 49 additions and 60 deletions.
55 changes: 21 additions & 34 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,10 @@ set(CMAKE_CXX_EXTENSIONS OFF)
# On OSX we reexport the symbols from libpdal_util.dylib into libpdalcpp.dylib
# See below for the rest of the magic.
#
if (APPLE OR WIN32)
set(PDAL_BASE_LIB_NAME pdalcpp)
else()
set(PDAL_BASE_LIB_NAME pdal_base)
endif()

set(PDAL_LIB_NAME pdalcpp)


set(PDAL_UTIL_LIB_NAME pdal_util)
set(PDAL_KAZHDAN_LIB_NAME pdal_kazhdan)
set(PDAL_TEST_SUPPORT_OBJS pdal_test_support)
Expand All @@ -63,9 +61,9 @@ set(PDAL_OUTPUT_BIN_DIR "${PDAL_BINARY_DIR}/${PDAL_BIN_INSTALL_DIR}")
# allow override of PDAL_PLUGIN_INSTALL_PATH path
if (NOT PDAL_PLUGIN_INSTALL_PATH)
if (WIN32)
set(PDAL_PLUGIN_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${PDAL_BIN_INSTALL_DIR}")
set(PDAL_PLUGIN_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${PDAL_BIN_INSTALL_DIR}" CACHE PATH "PDAL Plugin install location")
else()
set(PDAL_PLUGIN_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${PDAL_LIB_INSTALL_DIR}")
set(PDAL_PLUGIN_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${PDAL_LIB_INSTALL_DIR}" CACHE PATH "PDAL Plugin install location")
endif()
endif()
file(MAKE_DIRECTORY "${PDAL_OUTPUT_LIB_DIR}")
Expand All @@ -80,11 +78,11 @@ set_directory_properties(PROPERTY ADDITIONAL_MAKE_CLEAN_FILES

if(WIN32)
add_definitions("-DPDAL_DLL_EXPORT=1")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${PDAL_OUTPUT_LIB_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${PDAL_OUTPUT_BIN_DIR}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${PDAL_OUTPUT_LIB_DIR}" )
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${PDAL_OUTPUT_BIN_DIR}" )
# ---[ Windows requires DLLs (shared libraries) to be installed in
# ---[ the same directory as executables
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${PDAL_OUTPUT_BIN_DIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CMAKE_BUILD_TYPE} "${PDAL_OUTPUT_BIN_DIR}" )
endif(WIN32)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PDAL_OUTPUT_LIB_DIR}")
Expand Down Expand Up @@ -174,18 +172,6 @@ add_subdirectory(vendor/utfcpp)
add_subdirectory(pdal/util)
add_subdirectory(tools)
add_subdirectory(apps)
#
# On OSX we reexport the symbols in libpdal_util.dylib into libpdalcpp.dylib
# so that users only need link libpdalcpp.
#
if (APPLE)
set(PDAL_REEXPORT "-Wl,-reexport_library,$<TARGET_FILE:${PDAL_UTIL_LIB_NAME}>")
#
# This allows the rpath reference for the reexported library (above) to
# be found.
#
set(PDAL_LIBDIR "-L$<TARGET_FILE_DIR:${PDAL_UTIL_LIB_NAME}>")
endif()

file(GLOB BASE_SRCS
${PDAL_FILTERS_DIR}/*.cpp
Expand Down Expand Up @@ -234,13 +220,14 @@ if (GDAL_VERSION VERSION_LESS 3.0.0)
${PDAL_FILTERS_DIR}/ProjPipelineFilter.cpp)
list(REMOVE_ITEM SRCS ${PROJPIPELINE_FILTER_SRCS})
endif()
PDAL_ADD_LIBRARY(${PDAL_BASE_LIB_NAME} ${SRCS} ${RPLY_SRCS})

PDAL_ADD_LIBRARY(${PDAL_LIB_NAME} ${SRCS} ${RPLY_SRCS} $<TARGET_OBJECTS:${PDAL_UTIL_LIB_NAME}>)
add_library(PDAL::PDAL ALIAS ${PDAL_LIB_NAME})
#
# Interface include directories allow downstream project to get the directory
# without specification.
#
target_include_directories(${PDAL_BASE_LIB_NAME}
target_include_directories(${PDAL_LIB_NAME}
PRIVATE
${ROOT_DIR}
${PROJECT_BINARY_DIR}/include
Expand All @@ -253,7 +240,7 @@ target_include_directories(${PDAL_BASE_LIB_NAME}
${GDAL_INCLUDE_DIR}
${PROJ_INCLUDE_DIR}
)
target_link_libraries(${PDAL_BASE_LIB_NAME}
target_link_libraries(${PDAL_LIB_NAME}
PRIVATE
${CMAKE_THREAD_LIBS_INIT}
${CMAKE_DL_LIBS}
Expand All @@ -264,24 +251,24 @@ target_link_libraries(${PDAL_BASE_LIB_NAME}
${ZLIB_LIBRARIES}
${LIBLZMA_LIBRARIES}
${ZSTD_LIBRARIES}
${WINSOCK_LIBRARY}
${PDAL_REEXPORT}
${PDAL_UTIL_LIB_NAME}
${PDAL_ARBITER_LIB_NAME}
${JSON_SCHEMA_LIB_NAME}
${PDAL_KAZHDAN_LIB_NAME}
${PDAL_LAZPERF_LIB_NAME}
${UTFCPP_LIB_NAME}
PUBLIC
${WINSOCK_LIBRARY}
INTERFACE
${PDAL_LIBDIR}
${WINSOCK_LIBRARY}
)
set_target_properties(${PDAL_BASE_LIB_NAME} PROPERTIES
set_target_properties(${PDAL_LIB_NAME} PROPERTIES
VERSION ${PDAL_BUILD_VERSION}
SOVERSION ${PDAL_API_VERSION}
CLEAN_DIRECT_OUTPUT 1)



# shut off -Wpedantic selectively
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
set_source_files_properties(filters/PoissonFilter.cpp PROPERTIES COMPILE_FLAGS -Wno-pedantic)
Expand Down Expand Up @@ -379,7 +366,7 @@ add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)

export(
TARGETS
${PDAL_BASE_LIB_NAME} ${PDAL_UTIL_LIB_NAME}
${PDAL_LIB_NAME}
FILE
"${PDAL_BINARY_DIR}/PDALTargets.cmake")

Expand All @@ -394,12 +381,12 @@ include(${PDAL_CMAKE_DIR}/config.cmake)
# Allow downstream cmake projects to find PDAL header files without
# being explicit.
#
target_include_directories(${PDAL_BASE_LIB_NAME}
INTERFACE
$<INSTALL_INTERFACE:include>)
target_include_directories(${PDAL_UTIL_LIB_NAME}
target_include_directories(${PDAL_LIB_NAME}
INTERFACE
$<INSTALL_INTERFACE:include>)
#target_include_directories(${PDAL_UTIL_LIB_NAME}
# INTERFACE
# $<INSTALL_INTERFACE:include>)

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES)

Expand Down
2 changes: 1 addition & 1 deletion PDALConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ include("${CMAKE_CURRENT_LIST_DIR}/PDALTargets.cmake")
# an actual library that cmake knows about. If you can figure this out,
# a change would be nice.
#
set(PDAL_LIBRARIES @PDAL_BASE_LIB_NAME@ @PDAL_UTIL_LIB_NAME@)
set(PDAL_LIBRARIES @PDAL_LIB_NAME@)

check_required_components(PDAL)
6 changes: 2 additions & 4 deletions apps/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,13 @@ endif(APPLE AND PDAL_BUNDLE)
pdal_target_compile_settings(${PDAL_APP})
target_link_libraries(${PDAL_APP}
PRIVATE
${PDAL_BASE_LIB_NAME}
${PDAL_UTIL_LIB_NAME}
${GDAL_LIBRARY}
${PDAL_LIB_NAME}
GDAL::GDAL
${WINSOCK_LIBRARY}
)
target_include_directories(${PDAL_APP} PRIVATE
${NLOHMANN_INCLUDE_DIR}
${PDAL_INCLUDE_DIR}
${GDAL_INCLUDE_DIR}
${PROJECT_BINARY_DIR}/include)

IF(MSVC)
Expand Down
6 changes: 2 additions & 4 deletions cmake/macros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,7 @@ macro(PDAL_ADD_PLUGIN _name _type _shortname)
endif()
target_link_libraries(${${_name}}
PRIVATE
${PDAL_BASE_LIB_NAME}
${PDAL_UTIL_LIB_NAME}
${PDAL_LIB_NAME}
${PDAL_ADD_PLUGIN_LINK_WITH}
${WINSOCK_LIBRARY}
)
Expand Down Expand Up @@ -210,8 +209,7 @@ macro(PDAL_ADD_TEST _name)
set_property(TARGET ${_name} PROPERTY FOLDER "Tests")
target_link_libraries(${_name}
PRIVATE
${PDAL_BASE_LIB_NAME}
${PDAL_UTIL_LIB_NAME}
${PDAL_LIB_NAME}
gtest
${PDAL_ADD_TEST_LINK_WITH}
${WINSOCK_LIBRARY}
Expand Down
2 changes: 1 addition & 1 deletion dimbuilder/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# The seemingly strange arrangement of this cmake file allows you to build
# this application as a standalone.
#
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.13)

set(MAKE_COLOR_MAKEFILE ON)

Expand Down
2 changes: 1 addition & 1 deletion examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# a PDAL installation.
#

cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.13)
project(PdalExamples)
set(PDAL_EXAMPLES 1)
include(FeatureSummary)
Expand Down
4 changes: 2 additions & 2 deletions examples/writing-filter/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.13)
project(FilterTutorial)

find_package(PDAL 1.9.0 REQUIRED CONFIG)
find_package(PDAL 2.5 REQUIRED CONFIG)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
5 changes: 3 additions & 2 deletions examples/writing-kernel/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.13)
project(KernelTutorial)

find_package(PDAL 2.0.0 REQUIRED CONFIG)
find_package(PDAL 2.5 REQUIRED CONFIG)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Expand Down
5 changes: 3 additions & 2 deletions examples/writing-reader/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.13)
project(ReaderTutorial)

find_package(PDAL 2.0 REQUIRED CONFIG)
find_package(PDAL 2.5 REQUIRED CONFIG)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Expand Down
5 changes: 3 additions & 2 deletions examples/writing-writer/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.13)
project(WriterTutorial)

find_package(PDAL 2.0.0 REQUIRED CONFIG)
find_package(PDAL 2.5 REQUIRED CONFIG)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Expand Down
15 changes: 9 additions & 6 deletions pdal/util/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ set(PDAL_UTIL_SOURCES
"${PDAL_UTIL_DIR}/private/${BACKTRACE_SOURCE}"
)

PDAL_ADD_FREE_LIBRARY(${PDAL_UTIL_LIB_NAME} SHARED ${PDAL_UTIL_SOURCES})
add_library(${PDAL_UTIL_LIB_NAME} OBJECT ${PDAL_UTIL_SOURCES})
set_property(TARGET ${PDAL_UTIL_LIB_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)

target_link_libraries(${PDAL_UTIL_LIB_NAME}
PRIVATE
${BACKTRACE_LIBRARIES}
Expand All @@ -42,20 +44,21 @@ target_link_libraries(${PDAL_UTIL_LIB_NAME}
)

target_link_libraries(${PDAL_UTIL_LIB_NAME}
PUBLIC
PRIVATE
${WINSOCK_LIBRARY}
)

target_include_directories(${PDAL_UTIL_LIB_NAME}
PRIVATE
${PDAL_INCLUDE_DIR}
${UTFCPP_INCLUDE_DIR}
${NLOHMANN_INCLUDE_DIR}
)

set_target_properties(${PDAL_UTIL_LIB_NAME} PROPERTIES
VERSION "${PDAL_BUILD_VERSION}"
SOVERSION "${PDAL_API_VERSION}"
CLEAN_DIRECT_OUTPUT 1)
#set_target_properties(${PDAL_UTIL_LIB_NAME} PROPERTIES
# VERSION "${PDAL_BUILD_VERSION}"
# SOVERSION "${PDAL_API_VERSION}"
# CLEAN_DIRECT_OUTPUT 1)

set_property(GLOBAL PROPERTY _UTIL_INCLUDED TRUE)

Expand Down
2 changes: 1 addition & 1 deletion scripts/ci/win/examples.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ do
cd $BASE/examples/$EXAMPLE
mkdir -p _build || exit 1
cd _build || exit 1
cmake -G "Ninja" .. -DPDAL_DIR=$CONDA_PREFIX/lib/cmake/PDAL && ninja
cmake -G "Ninja" .. -DCMAKE_BUILD_TYPE=Release -DPDAL_DIR=$CONDA_PREFIX/lib/cmake/PDAL && ninja
done

0 comments on commit a3faa03

Please sign in to comment.