@@ -5,21 +5,32 @@ cmake_minimum_required(VERSION 3.2)
55project (LibAPR)
66set (CMAKE_CXX_STANDARD 14)
77
8+ # APR build options:
9+ option (APR_INSTALL "Install APR library" OFF )
10+ option (APR_BUILD_EXAMPLES "Build APR examples" OFF )
11+ option (APR_TESTS "Build APR tests" OFF )
12+ option (APR_PREFER_EXTERNAL_GTEST "When found, use the installed GTEST libs instead of included sources" OFF )
13+ option (APR_BUILD_JAVA_WRAPPERS "Build APR JAVA wrappers" OFF )
14+
15+
816###############################################################################
917# Generate configuration file
1018###############################################################################
1119set (APR_VERSION_MAJOR 1)
1220set (APR_VERSION_MINOR 0)
1321set (APR_VERSION_PATCH 0)
14- execute_process (COMMAND git rev-parse HEAD
15- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
16- OUTPUT_VARIABLE APR_GIT_HASH)
22+ execute_process (COMMAND git rev-parse HEAD
23+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
24+ OUTPUT_VARIABLE APR_GIT_HASH)
1725string (REGEX REPLACE "\n $" "" APR_GIT_HASH "${APR_GIT_HASH} " )
1826configure_file (
1927 "${PROJECT_SOURCE_DIR} /src/ConfigAPR.h.in"
2028 "${PROJECT_BINARY_DIR} /ConfigAPR.h"
2129)
2230include_directories ("${PROJECT_BINARY_DIR} " )
31+ file (READ "${PROJECT_BINARY_DIR} /ConfigAPR.h" ConfigAPRcontent)
32+ string (REGEX REPLACE ".*APR_VERSION[ \t ]+=[ \t ]+\" ([-0-9A-Za-z.]+)\" .*" "\\ 1" APR_VERSION_STRING ${ConfigAPRcontent} )
33+ message ("Configuring for APR version: " ${APR_VERSION_STRING} )
2334
2435###############################################################################
2536# Find all required libraries
@@ -52,6 +63,7 @@ include_directories(external/c-blosc/blosc)
5263# Add submodule GLM (include files only)
5364include_directories ("external/glm" )
5465
66+
5567###############################################################################
5668# Configure compiler options
5769###############################################################################
@@ -69,37 +81,40 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6981 set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g" )
7082endif ()
7183
84+
7285###############################################################################
7386# Generate APR library
7487###############################################################################
7588
76- include_directories (src)
7789set (SOURCE_FILES src/io/blosc_filter.c src/io/hdf5functions_blosc.cpp)
7890set (SOURCE_FILES_RAYCAST src/numerics/APRRaycaster.cpp src/vis/Camera.cpp src/vis/Object.cpp src/vis/RaytracedObject.cpp)
7991
8092# generate static library used as a intermediate step in generating fat lib
8193add_library (libapr_static STATIC ${SOURCE_FILES} ${SOURCE_FILES_RAYCAST} )
8294set_target_properties (libapr_static PROPERTIES OUTPUT_NAME apr)
83- target_link_libraries (libapr_static INTERFACE blosc_static ${HDF5_LIBRARIES} ${TIFF_LIBRARIES} )
95+ target_include_directories (libapr_static INTERFACE src )
8496
8597# generate fat static library by adding dependencies
86- include (external /AddStaticLibs.cmake)
98+ include (cmake /AddStaticLibs.cmake)
8799addStaticLibs(libapr_static blosc_static)
88100
89101# generate fat shared library
90102add_library (libapr_dynamic SHARED ${SOURCE_FILES} ${SOURCE_FILES_RAYCAST} )
91103add_dependencies (libapr_dynamic blosc_static)
92104set_target_properties (libapr_dynamic PROPERTIES OUTPUT_NAME apr)
105+ set_property (TARGET libapr_dynamic PROPERTY VERSION ${APR_VERSION_STRING} )
106+ set_property (TARGET libapr_dynamic PROPERTY SOVERSION ${APR_VERSION_MAJOR} )
107+ target_include_directories (libapr_dynamic INTERFACE src)
93108target_link_libraries (libapr_dynamic PUBLIC ${HDF5_LIBRARIES} ${TIFF_LIBRARIES} -Wl,-force_load,$<TARGET_FILE:blosc_static>)
94109
110+
95111###############################################################################
96112# Install APR library
97113###############################################################################
98- option (APR_INSTALL "Install APR library" OFF )
99114if (APR_INSTALL)
100115 message (STATUS "APR: Install library in [${CMAKE_INSTALL_PREFIX} ]" )
101- install (FILES ${PROJECT_BINARY_DIR} /libapr.a DESTINATION lib COMPONENT LIB)
102- # install(TARGETS libapr_dynamic DESTINATION lib COMPONENT LIB)
116+ install (TARGETS libapr_static DESTINATION lib COMPONENT LIB)
117+ # install(TARGETS libapr_dynamic DESTINATION lib COMPONENT LIB)
103118 install (DIRECTORY src/algorithm DESTINATION include /apr FILES_MATCHING PATTERN "*.hpp" )
104119 install (DIRECTORY src/data_structures DESTINATION include /apr FILES_MATCHING PATTERN "*.hpp" )
105120 install (DIRECTORY src/io DESTINATION include /apr FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" )
@@ -108,29 +123,22 @@ if(APR_INSTALL)
108123 install (DIRECTORY src/vis DESTINATION include /apr FILES_MATCHING PATTERN "*.h" )
109124 install (FILES ${PROJECT_BINARY_DIR} /ConfigAPR.h DESTINATION include /apr/io)
110125 install (FILES ${PROJECT_BINARY_DIR} /ConfigAPR.h DESTINATION include /apr)
111- if (APR_BUILD_EXAMPLES)
112- install (DIRECTORY ${PROJECT_BINARY_DIR} /examples/ DESTINATION bin
113- FILES_MATCHING PATTERN "CMake*" EXCLUDE PATTERN "*make*" EXCLUDE PATTERN "*dSYM*" EXCLUDE PATTERN "Example_*"
114- PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
115- )
116- endif (APR_BUILD_EXAMPLES)
117126endif (APR_INSTALL)
118127
128+
119129###############################################################################
120130# Examples
121131###############################################################################
122- option (APR_BUILD_EXAMPLES "Build APR examples" ON )
123132if (APR_BUILD_EXAMPLES)
124133 message (STATUS "APR: Building examples" )
125134 add_subdirectory (examples)
126135endif (APR_BUILD_EXAMPLES)
127136
137+
128138###############################################################################
129139# Tests
130140###############################################################################
131- option (APR_TESTS "Build tests wrappers" OFF )
132141if (APR_TESTS)
133- option (APR_PREFER_EXTERNAL_GTEST "Find and use external GTEST library instead of included sources." OFF )
134142 message (STATUS "APR: Building tests" )
135143 if (APR_PREFER_EXTERNAL_GTEST)
136144 find_package (GTest 1.8.0)
@@ -148,10 +156,10 @@ if(APR_TESTS)
148156 add_subdirectory (test )
149157endif (APR_TESTS)
150158
159+
151160###############################################################################
152161# JAVA wrappers
153162###############################################################################
154- option (APR_BUILD_JAVA_WRAPPERS "Build JAVA wrappers" OFF )
155163if (APR_BUILD_JAVA_WRAPPERS)
156164 message (STATUS "APR: Building JAVA wrappers" )
157165 find_package (SWIG 3.0 REQUIRED)
0 commit comments