~ubuntu-branches/ubuntu/utopic/liblas/utopic

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2013-11-26 16:03:56 UTC
  • mto: (1.2.1) (2.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: package-import@ubuntu.com-20131126160356-r94gc8jmp4lm0yix
Tags: upstream-1.7.0
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
###############################################################################
 
2
# Main CMake configuration file for libLAS
 
3
#
 
4
# Author: Mateusz Loskot <mateusz@loskot.net>
 
5
#
 
6
#
 
7
###############################################################################
 
8
# libLAS general settings
 
9
project(libLAS)
 
10
 
 
11
 
 
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")
 
19
 
 
20
if(WIN32)
 
21
  # Name of C++ library
 
22
  set(LIBLAS_LIB_NAME liblas)
 
23
 
 
24
  # Name of C library
 
25
  set(LIBLAS_C_LIB_NAME liblas_c)
 
26
  
 
27
  # Name of Chipper library
 
28
  set(LASCHIP_LIB_NAME liblas_chipper )  
 
29
  
 
30
  # Name of Kernel libray
 
31
  set(LASKERNEL_LIB_NAME liblas_kernel )
 
32
  
 
33
else()
 
34
  # Name of C++ library
 
35
  set(LIBLAS_LIB_NAME las)
 
36
  
 
37
  # Name of C library
 
38
  set(LIBLAS_C_LIB_NAME las_c)
 
39
 
 
40
  # Name of Chipper library
 
41
  set(LASCHIP_LIB_NAME las_chipper )  
 
42
 
 
43
  # Name of Kernel libray
 
44
  set(LASKERNEL_LIB_NAME las_kernel )
 
45
endif()
 
46
 
 
47
# Name of test suite runner
 
48
set(LIBLAS_UNIT_TEST liblas_test)
 
49
 
 
50
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
 
51
 
 
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")
 
55
 
 
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")
 
59
 
 
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")
 
61
 
 
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")
 
66
 
 
67
###############################################################################
 
68
# CMake settings
 
69
cmake_minimum_required(VERSION 2.6.0)
 
70
 
 
71
set(CMAKE_COLOR_MAKEFILE ON)
 
72
 
 
73
# Allow advanced users to generate Makefiles printing detailed commands
 
74
mark_as_advanced(CMAKE_VERBOSE_MAKEFILE)
 
75
 
 
76
# Path to additional CMake modules
 
77
set(CMAKE_MODULE_PATH ${libLAS_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
 
78
 
 
79
###############################################################################
 
80
# General build settings
 
81
 
 
82
# Default to debug mode until final 1.6.0 release 
 
83
if(NOT MSVC_IDE)
 
84
  if(NOT CMAKE_BUILD_TYPE)
 
85
 
 
86
  set(CMAKE_BUILD_TYPE Release CACHE STRING 
 
87
    "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel" FORCE)
 
88
  endif()
 
89
    message(STATUS "Setting libLAS build type - ${CMAKE_BUILD_TYPE}")
 
90
endif()
 
91
 
 
92
# TODO: Still testing the output paths --mloskot
 
93
set(LIBLAS_BUILD_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE})
 
94
 
 
95
# Output directory in which to build RUNTIME target files.
 
96
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBLAS_BUILD_OUTPUT_DIRECTORY})
 
97
 
 
98
# Output directory in which to build LIBRARY target files
 
99
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBLAS_BUILD_OUTPUT_DIRECTORY})
 
100
 
 
101
# Output directory in which to build ARCHIVE target files.
 
102
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBLAS_BUILD_OUTPUT_DIRECTORY}) 
 
103
 
 
104
file(READ "doc/index.txt" README )
 
105
file(WRITE "README.txt" "${README}")
 
106
 
 
107
###############################################################################
 
108
# Platform and compiler specific settings
 
109
 
 
110
if(WIN32)
 
111
  if (MSVC)
 
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)
 
117
    endif()
 
118
    
 
119
    if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
 
120
      string(REGEX REPLACE "/W[0-4]" "/W4"
 
121
        CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 
122
    else()
 
123
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
 
124
    endif()
 
125
 
 
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)
 
133
 
 
134
  endif()
 
135
  
 
136
  set(CMAKE_INCLUDE_PATH c:/osgeo4w/include;$ENV{CMAKE_INCLUDE_PATH})
 
137
  set(CMAKE_LIBRARY_PATH c:/osgeo4w/lib;$ENV{CMAKE_LIBRARY_PATH})
 
138
else()
 
139
 
 
140
  # Recommended C++ compilation flags
 
141
  # -Weffc++
 
142
  set(LIBLAS_COMMON_CXX_FLAGS
 
143
        "-pedantic -ansi -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wfloat-equal -Wredundant-decls -Wno-long-long")
 
144
 
 
145
  if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
 
146
 
 
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")
 
150
    endif()
 
151
 
 
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}")
 
154
  endif()
 
155
endif(WIN32)
 
156
 
 
157
if (APPLE)
 
158
  set(SO_EXT dylib)
 
159
  set(CMAKE_FIND_FRAMEWORK "LAST")
 
160
elseif(WIN32)
 
161
  set(SO_EXT dll)
 
162
else()
 
163
  set(SO_EXT so)
 
164
endif(APPLE)
 
165
 
 
166
###############################################################################
 
167
# Search for dependencies
 
168
 
 
169
# Boost C++ Libraries support - required
 
170
message(STATUS "Searching for Boost 1.38+ - done")
 
171
 
 
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.
 
176
if(WIN32)
 
177
  if (MSVC)
 
178
    set(Boost_USE_STATIC_LIBS   ON)
 
179
    set(Boost_USE_MULTITHREADED ON)
 
180
  endif(MSVC)
 
181
endif(WIN32)
 
182
 
 
183
# NOTE: Add iostreams to COMPONENTS list to enable bigfile_boost_iostreams_test
 
184
find_package(Boost 1.38 COMPONENTS program_options thread REQUIRED)
 
185
 
 
186
if(Boost_FOUND AND Boost_PROGRAM_OPTIONS_FOUND)
 
187
  include_directories(${Boost_INCLUDE_DIRS})
 
188
endif()
 
189
 
 
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}) 
 
194
 
 
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)
 
199
 
 
200
if (WITH_LASZIP)
 
201
    find_package(LASzip 2.0.1)
 
202
 
 
203
    if(LASZIP_FOUND)    
 
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) 
 
210
    endif()
 
211
endif()
 
212
 
 
213
# GDAL/OGR support - optional, default=OFF
 
214
set(WITH_GDAL FALSE CACHE BOOL "Choose if GDAL support should be built")
 
215
 
 
216
if(WITH_GDAL)
 
217
 
 
218
  find_package(GDAL 1.7.0)
 
219
  include_directories(${GDAL_INCLUDE_DIR})
 
220
  add_definitions(-DHAVE_GDAL=1)
 
221
 
 
222
  mark_as_advanced(CLEAR GDAL_INCLUDE_DIR) 
 
223
  mark_as_advanced(CLEAR GDAL_LIBRARY) 
 
224
 
 
225
endif()
 
226
 
 
227
# GeoTIFF support - optional, default=OFF
 
228
set(WITH_GEOTIFF FALSE CACHE BOOL "Choose if GeoTIFF support should be built")
 
229
 
 
230
if(WITH_GEOTIFF)
 
231
  find_package(GeoTIFF 1.2.5)
 
232
 
 
233
  if(GEOTIFF_FOUND)
 
234
    
 
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)
 
239
    
 
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.")
 
243
    #        else()
 
244
    include_directories(${GEOTIFF_INCLUDE_DIR})
 
245
    add_definitions(-DHAVE_LIBGEOTIFF=1)
 
246
    #        endif()
 
247
  endif()
 
248
 
 
249
  # Determine libTIFF availability, required
 
250
  if (GEOTIFF_FOUND)
 
251
 
 
252
    mark_as_advanced(CLEAR TIFF_INCLUDE_DIR) 
 
253
    mark_as_advanced(CLEAR TIFF_LIBRARY) 
 
254
    if (WIN32)
 
255
        set(TIFF_NAMES libtiff_i)
 
256
    endif(WIN32)
 
257
    find_package(TIFF) 
 
258
    if (TIFF_FOUND)
 
259
      include_directories(${TIFF_INCLUDE_DIR})
 
260
    endif()
 
261
  endif()
 
262
endif()
 
263
 
 
264
if(WITH_GDAL)
 
265
  if (NOT GEOTIFF_FOUND)
 
266
    message(FATAL_ERROR
 
267
      "GDAL support requires GeoTIFF library which was not selected")
 
268
  endif()
 
269
endif()
 
270
 
 
271
 
 
272
if(WITH_ENDIANAWARE)
 
273
    add_definitions(-DLIBLAS_ENDIAN_AWARE=1)
 
274
endif()
 
275
###############################################################################
 
276
# Installation settings
 
277
 
 
278
if(WIN32)
 
279
  set(DEFAULT_LIB_SUBDIR lib)
 
280
  set(DEFAULT_DATA_SUBDIR .)
 
281
  set(DEFAULT_INCLUDE_SUBDIR include)
 
282
 
 
283
  if (MSVC)
 
284
    set(DEFAULT_BIN_SUBDIR bin)
 
285
  else()
 
286
    set(DEFAULT_BIN_SUBDIR .)
 
287
  endif()
 
288
else()
 
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)
 
294
endif()
 
295
 
 
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")
 
306
 
 
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)
 
310
 
 
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})
 
316
 
 
317
###############################################################################
 
318
# Installation commands
 
319
 
 
320
install(FILES AUTHORS COPYING INSTALL LICENSE.txt README.txt
 
321
  DESTINATION ${LIBLAS_DATA_DIR}/doc)
 
322
 
 
323
###############################################################################
 
324
# Processing of project directories
 
325
 
 
326
add_subdirectory(src)
 
327
 
 
328
if(WITH_UTILITIES)
 
329
  message(STATUS "Enable libLAS utilities to build - done")
 
330
  add_subdirectory(apps)
 
331
endif()
 
332
 
 
333
if(WITH_TESTS)
 
334
  message(STATUS "Enable libLAS unit tests to build - done")
 
335
  enable_testing()
 
336
 
 
337
 
 
338
  if(ENABLE_CTEST)
 
339
    message(STATUS
 
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
 
344
    include(CTest)
 
345
    message(STATUS
 
346
      "Enable CTest to support submissions of results to CDash at http://cdash.org - done")
 
347
  endif()
 
348
 
 
349
  add_subdirectory(test)
 
350
else()
 
351
  if(ENABLE_CTEST)
 
352
    message(WARNING
 
353
      "CTest support requested but WITH_TESTS option not specified to build of libLAS unit tests")
 
354
  endif()
 
355
endif()
 
356
 
 
357
 
 
358
 
 
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})
 
363
 
 
364
SET(CPACK_SOURCE_GENERATOR "TGZ;ZIP;TBZ2")
 
365
SET(CPACK_CMAKE_GENERATOR "Unix Makefiles")
 
366
 
 
367
 
 
368
 
 
369
set(CPACK_SOURCE_PACKAGE_FILE_NAME
 
370
  "${CMAKE_PROJECT_NAME}-${VERSION}")
 
371
  
 
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")
 
380
 
 
381
list(APPEND CPACK_SOURCE_IGNORE_FILES "CMakeCache.txt")
 
382
 
 
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")
 
387
 
 
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")
 
391
include(CPack)
 
392
 
 
393
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
 
394
 
 
395
#if (WIN32)
 
396
#    include(BuildOSGeo4W)
 
397
#endif(WIN32)