1
###############################################################################
2
# Main CMake configuration file for libLAS
4
# Author: Mateusz Loskot <mateusz@loskot.net>
7
###############################################################################
8
# libLAS general settings
12
SET(LIBLAS_VERSION_MAJOR "1")
13
SET(LIBLAS_VERSION_MINOR "7")
14
SET(LIBLAS_VERSION_PATCH "0")
15
set(VERSION "${LIBLAS_VERSION_MAJOR}.${LIBLAS_VERSION_MINOR}.${LIBLAS_VERSION_PATCH}")
16
SET(LIBLAS_LIB_SOVERSION "2.2.0")
17
SET(LIBLAS_C_LIB_SOVERSION "2.2.0")
18
SET(OSGEO4W_UPSTREAM_RELEASE "1")
22
set(LIBLAS_LIB_NAME liblas)
25
set(LIBLAS_C_LIB_NAME liblas_c)
27
# Name of Chipper library
28
set(LASCHIP_LIB_NAME liblas_chipper )
30
# Name of Kernel libray
31
set(LASKERNEL_LIB_NAME liblas_kernel )
35
set(LIBLAS_LIB_NAME las)
38
set(LIBLAS_C_LIB_NAME las_c)
40
# Name of Chipper library
41
set(LASCHIP_LIB_NAME las_chipper )
43
# Name of Kernel libray
44
set(LASKERNEL_LIB_NAME las_kernel )
47
# Name of test suite runner
48
set(LIBLAS_UNIT_TEST liblas_test)
50
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
52
# Choose package components
53
set(WITH_UTILITIES TRUE CACHE BOOL "Choose if libLAS utilities should be built")
54
set(WITH_TESTS TRUE CACHE BOOL "Choose if libLAS unit tests should be built")
56
# Choose to use pkg-config or not
57
set(WITH_PKGCONFIG FALSE CACHE BOOL
58
"Choose whether a pkgconfig file (libLAS.pc) should be installed")
60
set(WITH_ENDIANAWARE FALSE CACHE BOOL "Choose whether or not libLAS should do runtime endianness switching. Note that this can slow things down considerably if enabled by default")
62
# Enable CTest and submissions to libLAS dashboard at CDash
63
# http://my.cdash.org/index.php?project=libLAS
64
set(ENABLE_CTEST FALSE CACHE BOOL
65
"Enable CTest to support submissions of results to CDash at http://cdash.org")
67
###############################################################################
69
cmake_minimum_required(VERSION 2.6.0)
71
set(CMAKE_COLOR_MAKEFILE ON)
73
# Allow advanced users to generate Makefiles printing detailed commands
74
mark_as_advanced(CMAKE_VERBOSE_MAKEFILE)
76
# Path to additional CMake modules
77
set(CMAKE_MODULE_PATH ${libLAS_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
79
###############################################################################
80
# General build settings
82
# Default to debug mode until final 1.6.0 release
84
if(NOT CMAKE_BUILD_TYPE)
86
set(CMAKE_BUILD_TYPE Release CACHE STRING
87
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel" FORCE)
89
message(STATUS "Setting libLAS build type - ${CMAKE_BUILD_TYPE}")
92
# TODO: Still testing the output paths --mloskot
93
set(LIBLAS_BUILD_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE})
95
# Output directory in which to build RUNTIME target files.
96
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBLAS_BUILD_OUTPUT_DIRECTORY})
98
# Output directory in which to build LIBRARY target files
99
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBLAS_BUILD_OUTPUT_DIRECTORY})
101
# Output directory in which to build ARCHIVE target files.
102
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBLAS_BUILD_OUTPUT_DIRECTORY})
104
file(READ "doc/index.txt" README )
105
file(WRITE "README.txt" "${README}")
107
###############################################################################
108
# Platform and compiler specific settings
112
if (MSVC80 OR MSVC90 OR MSVC10)
113
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
114
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
115
add_definitions(-D_CRT_NONSTDC_NO_WARNING)
116
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
119
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
120
string(REGEX REPLACE "/W[0-4]" "/W4"
121
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
123
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
126
# Generate dot-user file with user-specific settings for
127
# Visual Studio project
128
set(MSVC_ENVIRONMENT_PATH "" CACHE STRING
129
"Custom PATH for Environment property in Visual Studio for project")
130
mark_as_advanced(MSVC_ENVIRONMENT_PATH)
131
set(VCPROJ_USER_ENVIRONMENT_PATH_DEBUG "${ENVIRONMENT_PATH}")
132
mark_as_advanced(VCPROJ_USER_ENVIRONMENT_PATH_DEBUG)
136
set(CMAKE_INCLUDE_PATH c:/osgeo4w/include;$ENV{CMAKE_INCLUDE_PATH})
137
set(CMAKE_LIBRARY_PATH c:/osgeo4w/lib;$ENV{CMAKE_LIBRARY_PATH})
140
# Recommended C++ compilation flags
142
set(LIBLAS_COMMON_CXX_FLAGS
143
"-pedantic -ansi -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wfloat-equal -Wredundant-decls -Wno-long-long")
145
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
147
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBLAS_COMMON_CXX_FLAGS}")
148
if (CMAKE_COMPILER_IS_GNUCXX)
149
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98")
152
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER}" MATCHES "clang")
153
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBLAS_COMMON_CXX_FLAGS}")
159
set(CMAKE_FIND_FRAMEWORK "LAST")
166
###############################################################################
167
# Search for dependencies
169
# Boost C++ Libraries support - required
170
message(STATUS "Searching for Boost 1.38+ - done")
172
# Default to using static, multithreaded libraries for
173
# linking under MSVC. This is because we show users how to
174
# use boostpro.com installer and install those options when linking
175
# on windows in the compilation documentation.
178
set(Boost_USE_STATIC_LIBS ON)
179
set(Boost_USE_MULTITHREADED ON)
183
# NOTE: Add iostreams to COMPONENTS list to enable bigfile_boost_iostreams_test
184
find_package(Boost 1.38 COMPONENTS program_options thread REQUIRED)
186
if(Boost_FOUND AND Boost_PROGRAM_OPTIONS_FOUND)
187
include_directories(${Boost_INCLUDE_DIRS})
190
# make these available for the user to set.
191
mark_as_advanced(CLEAR Boost_INCLUDE_DIR)
192
mark_as_advanced(CLEAR Boost_LIBRARY_DIRS)
193
link_directories(${Boost_LIBRARY_DIRS})
195
# LASZIP support - optional, default=ON
196
set(WITH_LASZIP FALSE CACHE BOOL "Choose if LASzip support should be built")
197
set(WITH_STATIC_LASZIP FALSE CACHE BOOL "Choose of LASzip should be statically linked")
198
mark_as_advanced(WITH_STATIC_LASZIP)
201
find_package(LASzip 2.0.1)
204
set(CMAKE_REQUIRED_LIBRARIES ${LASZIP_LIBRARY})
205
include_directories(${LASZIP_INCLUDE_DIR})
206
add_definitions(-DHAVE_LASZIP=1)
207
mark_as_advanced(CLEAR LASZIP_INCLUDE_DIR)
208
mark_as_advanced(CLEAR LASZIP_LIBRARY)
209
mark_as_advanced(CLEAR LASZIP_VERSION)
213
# GDAL/OGR support - optional, default=OFF
214
set(WITH_GDAL FALSE CACHE BOOL "Choose if GDAL support should be built")
218
find_package(GDAL 1.7.0)
219
include_directories(${GDAL_INCLUDE_DIR})
220
add_definitions(-DHAVE_GDAL=1)
222
mark_as_advanced(CLEAR GDAL_INCLUDE_DIR)
223
mark_as_advanced(CLEAR GDAL_LIBRARY)
227
# GeoTIFF support - optional, default=OFF
228
set(WITH_GEOTIFF FALSE CACHE BOOL "Choose if GeoTIFF support should be built")
231
find_package(GeoTIFF 1.2.5)
235
# Confirm required API is available
236
include(CheckFunctionExists)
237
set(CMAKE_REQUIRED_LIBRARIES ${GEOTIFF_LIBRARY})
238
# check_function_exists(ST_Create HAVE_ST_CREATE)
240
# if(NOT HAVE_ST_CREATE)
241
# set(GEOTIFF_FOUND) # Reset to NOT found for GeoTIFF
242
# message(FATAL_ERROR "GeoTIFF support requires libgeotiff 1.2.5 or newer.")
244
include_directories(${GEOTIFF_INCLUDE_DIR})
245
add_definitions(-DHAVE_LIBGEOTIFF=1)
249
# Determine libTIFF availability, required
252
mark_as_advanced(CLEAR TIFF_INCLUDE_DIR)
253
mark_as_advanced(CLEAR TIFF_LIBRARY)
255
set(TIFF_NAMES libtiff_i)
259
include_directories(${TIFF_INCLUDE_DIR})
265
if (NOT GEOTIFF_FOUND)
267
"GDAL support requires GeoTIFF library which was not selected")
273
add_definitions(-DLIBLAS_ENDIAN_AWARE=1)
275
###############################################################################
276
# Installation settings
279
set(DEFAULT_LIB_SUBDIR lib)
280
set(DEFAULT_DATA_SUBDIR .)
281
set(DEFAULT_INCLUDE_SUBDIR include)
284
set(DEFAULT_BIN_SUBDIR bin)
286
set(DEFAULT_BIN_SUBDIR .)
289
# Common locatoins for Unix and Mac OS X
290
set(DEFAULT_BIN_SUBDIR bin)
291
set(DEFAULT_LIB_SUBDIR lib)
292
set(DEFAULT_DATA_SUBDIR share/liblas)
293
set(DEFAULT_INCLUDE_SUBDIR include)
296
# Locations are changeable by user to customize layout of libLAS installation
297
# (default values are platform-specific)
298
set(LIBLAS_BIN_SUBDIR ${DEFAULT_BIN_SUBDIR} CACHE STRING
299
"Subdirectory where executables will be installed")
300
set(LIBLAS_LIB_SUBDIR ${DEFAULT_LIB_SUBDIR} CACHE STRING
301
"Subdirectory where libraries will be installed")
302
set(LIBLAS_INCLUDE_SUBDIR ${DEFAULT_INCLUDE_SUBDIR} CACHE STRING
303
"Subdirectory where header files will be installed")
304
set(LIBLAS_DATA_SUBDIR ${DEFAULT_DATA_SUBDIR} CACHE STRING
305
"Subdirectory where data will be installed")
307
# Mark *_SUBDIR variables as advanced and dedicated to use by power-users only.
308
mark_as_advanced(LIBLAS_BIN_SUBDIR
309
LIBLAS_LIB_SUBDIR LIBLAS_INCLUDE_SUBDIR LIBLAS_DATA_SUBDIR)
311
# Full paths for the installation
312
set(LIBLAS_BIN_DIR ${LIBLAS_BIN_SUBDIR})
313
set(LIBLAS_LIB_DIR ${LIBLAS_LIB_SUBDIR})
314
set(LIBLAS_INCLUDE_DIR ${LIBLAS_INCLUDE_SUBDIR})
315
set(LIBLAS_DATA_DIR ${LIBLAS_DATA_SUBDIR})
317
###############################################################################
318
# Installation commands
320
install(FILES AUTHORS COPYING INSTALL LICENSE.txt README.txt
321
DESTINATION ${LIBLAS_DATA_DIR}/doc)
323
###############################################################################
324
# Processing of project directories
326
add_subdirectory(src)
329
message(STATUS "Enable libLAS utilities to build - done")
330
add_subdirectory(apps)
334
message(STATUS "Enable libLAS unit tests to build - done")
340
"Enable CTest to support submissions of results to CDash at http://cdash.org")
341
cmake_minimum_required(VERSION 2.8.0)
342
# Dashboard has been prepared for experiments
343
# http://my.cdash.org/index.php?project=libLAS
346
"Enable CTest to support submissions of results to CDash at http://cdash.org - done")
349
add_subdirectory(test)
353
"CTest support requested but WITH_TESTS option not specified to build of libLAS unit tests")
359
# Version information
360
SET(CPACK_PACKAGE_VERSION_MAJOR ${LIBLAS_VERSION_MAJOR})
361
SET(CPACK_PACKAGE_VERSION_MINOR ${LIBLAS_VERSION_MINOR})
362
SET(CPACK_PACKAGE_VERSION_PATCH ${LIBLAS_VERSION_MINOR})
364
SET(CPACK_SOURCE_GENERATOR "TGZ;ZIP;TBZ2")
365
SET(CPACK_CMAKE_GENERATOR "Unix Makefiles")
369
set(CPACK_SOURCE_PACKAGE_FILE_NAME
370
"${CMAKE_PROJECT_NAME}-${VERSION}")
372
list(APPEND CPACK_SOURCE_IGNORE_FILES "/test/data/TO_core_last_zoom.las")
373
list(APPEND CPACK_SOURCE_IGNORE_FILES "_CPack_Packages")
374
list(APPEND CPACK_SOURCE_IGNORE_FILES ".gz")
375
list(APPEND CPACK_SOURCE_IGNORE_FILES ".bz2")
376
list(APPEND CPACK_SOURCE_IGNORE_FILES ".hg")
377
list(APPEND CPACK_SOURCE_IGNORE_FILES "README")
378
list(APPEND CPACK_SOURCE_IGNORE_FILES "HOWTORELEASE.txt")
379
list(APPEND CPACK_SOURCE_IGNORE_FILES "/doc/_static/files")
381
list(APPEND CPACK_SOURCE_IGNORE_FILES "CMakeCache.txt")
383
list(APPEND CPACK_SOURCE_IGNORE_FILES "CPackConfig.cmake")
384
list(APPEND CPACK_SOURCE_IGNORE_FILES "schemas")
385
list(APPEND CPACK_SOURCE_IGNORE_FILES "hobu-config.bat")
386
list(APPEND CPACK_SOURCE_IGNORE_FILES "mpg-config.bat")
388
list(APPEND CPACK_SOURCE_IGNORE_FILES "liblas-osgeo4w-init.bat")
389
list(APPEND CPACK_SOURCE_IGNORE_FILES "liblas-osgeo4w-start.bat.tmpl")
390
list(APPEND CPACK_SOURCE_IGNORE_FILES "liblas-osgeo4w-postinstall.bat")
393
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
396
# include(BuildOSGeo4W)