|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# CMakeLists.txt --- a simple "cmake" file for building LZO
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# This file is part of the LZO data compression library.
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
|
|
Packit Service |
5195f2 |
# All Rights Reserved.
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# simple usage:
|
|
Packit Service |
5195f2 |
# mkdir -p build && cd build && cmake .. && make
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# another usage example:
|
|
Packit Service |
5195f2 |
# mkdir -p build/release-i686
|
|
Packit Service |
5195f2 |
# cd build/release-i686
|
|
Packit Service |
5195f2 |
# cmake ../.. -DENABLE_STATIC=0 -DENABLE_SHARED=1 \
|
|
Packit Service |
5195f2 |
# -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -march=i686" \
|
|
Packit Service |
5195f2 |
# -DCMAKE_INSTALL_PREFIX=/opt/local/prefix-i686
|
|
Packit Service |
5195f2 |
# make VERBOSE=1
|
|
Packit Service |
5195f2 |
# make install
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# init
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
# Disallow in-source builds. Note that you will still have to manually
|
|
Packit Service |
5195f2 |
# clean up a few files if you accidentally try an in-source build.
|
|
Packit Service |
5195f2 |
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
|
Packit Service |
5195f2 |
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
|
|
Packit Service |
5195f2 |
if(",${CMAKE_SOURCE_DIR}," STREQUAL ",${CMAKE_BINARY_DIR},")
|
|
Packit Service |
5195f2 |
message(FATAL_ERROR "ERROR: In-source builds are not allowed.")
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
project(lzo C)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# configuration options
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
option(ENABLE_STATIC "Build static LZO library." ON)
|
|
Packit Service |
5195f2 |
option(ENABLE_SHARED "Build shared LZO library." OFF)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
if(NOT CMAKE_BUILD_TYPE)
|
|
Packit Service |
5195f2 |
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(NOT CMAKE_INSTALL_PREFIX)
|
|
Packit Service |
5195f2 |
set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "" FORCE)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# targets
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
file(GLOB lzo_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c")
|
|
Packit Service |
5195f2 |
list(SORT lzo_SOURCES)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
if(NOT ENABLE_STATIC AND NOT ENABLE_SHARED)
|
|
Packit Service |
5195f2 |
set(ENABLE_STATIC ON)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(ENABLE_STATIC)
|
|
Packit Service |
5195f2 |
add_library(lzo_static STATIC ${lzo_SOURCES})
|
|
Packit Service |
5195f2 |
set_target_properties(lzo_static PROPERTIES OUTPUT_NAME lzo2)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(ENABLE_SHARED)
|
|
Packit Service |
5195f2 |
add_library(lzo_shared SHARED ${lzo_SOURCES})
|
|
Packit Service |
5195f2 |
set_target_properties(lzo_shared PROPERTIES OUTPUT_NAME lzo2)
|
|
Packit Service |
5195f2 |
# TODO: VERSION, SOVERSION
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
macro(lzo_add_executable t)
|
|
Packit Service |
5195f2 |
add_executable(${t} ${ARGN})
|
|
Packit Service |
5195f2 |
if(ENABLE_STATIC)
|
|
Packit Service |
5195f2 |
target_link_libraries(${t} lzo_static)
|
|
Packit Service |
5195f2 |
else()
|
|
Packit Service |
5195f2 |
target_link_libraries(${t} lzo_shared)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
endmacro()
|
|
Packit Service |
5195f2 |
# main test driver
|
|
Packit Service |
5195f2 |
lzo_add_executable(lzotest lzotest/lzotest.c)
|
|
Packit Service |
5195f2 |
# examples
|
|
Packit Service |
5195f2 |
lzo_add_executable(dict examples/dict.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(lzopack examples/lzopack.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(overlap examples/overlap.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(precomp examples/precomp.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(precomp2 examples/precomp2.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(simple examples/simple.c)
|
|
Packit Service |
5195f2 |
if(0)
|
|
Packit Service |
5195f2 |
# some boring test programs
|
|
Packit Service |
5195f2 |
lzo_add_executable(align tests/align.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(chksum tests/chksum.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(promote tests/promote.c)
|
|
Packit Service |
5195f2 |
lzo_add_executable(sizes tests/sizes.c)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# compilation flags
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
Packit Service |
5195f2 |
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
include(CheckFunctionExists)
|
|
Packit Service |
5195f2 |
include(CheckIncludeFile)
|
|
Packit Service |
5195f2 |
include(CheckLibraryExists)
|
|
Packit Service |
5195f2 |
include(CheckSymbolExists)
|
|
Packit Service |
5195f2 |
include(CheckTypeSize)
|
|
Packit Service |
5195f2 |
include(TestBigEndian)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
# Checks for header files
|
|
Packit Service |
5195f2 |
macro(lzo_check_include_file f var)
|
|
Packit Service |
5195f2 |
check_include_file("${f}" "${var}")
|
|
Packit Service |
5195f2 |
if(NOT ",${${var}}," STREQUAL ",,")
|
|
Packit Service |
5195f2 |
add_definitions(-D${var}=1)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
endmacro()
|
|
Packit Service |
5195f2 |
lzo_check_include_file(stdint.h HAVE_STDINT_H)
|
|
Packit Service |
5195f2 |
lzo_check_include_file(sys/stat.h HAVE_SYS_STAT_H)
|
|
Packit Service |
5195f2 |
lzo_check_include_file(sys/types.h HAVE_SYS_TYPES_H)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
# Checks for typedefs and structures
|
|
Packit Service |
5195f2 |
macro(lzo_check_type_size type var)
|
|
Packit Service |
5195f2 |
check_type_size("${type}" "${var}")
|
|
Packit Service |
5195f2 |
if("${${var}}" MATCHES "^[0-9]+$")
|
|
Packit Service |
5195f2 |
add_definitions(-D${var}=${${var}})
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
endmacro()
|
|
Packit Service |
5195f2 |
lzo_check_type_size("short" SIZEOF_SHORT)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("int" SIZEOF_INT)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("long" SIZEOF_LONG)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("long long" SIZEOF_LONG_LONG)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("ptrdiff_t" SIZEOF_PTRDIFF_T)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("size_t" SIZEOF_SIZE_T)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("void *" SIZEOF_VOID_P)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("uintptr_t" SIZEOF_UINTPTR_T)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("__int16" SIZEOF___INT16)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("__int32" SIZEOF___INT32)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("__int64" SIZEOF___INT64)
|
|
Packit Service |
5195f2 |
lzo_check_type_size("off_t" SIZEOF_OFF_T)
|
|
Packit Service |
5195f2 |
##lzo_check_type_size("off64_t" SIZEOF_OFF64_T)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
# Checks for library functions
|
|
Packit Service |
5195f2 |
macro(lzo_check_function_exists func var)
|
|
Packit Service |
5195f2 |
check_function_exists("${func}" "${var}")
|
|
Packit Service |
5195f2 |
if(NOT ",${${var}}," STREQUAL ",,")
|
|
Packit Service |
5195f2 |
add_definitions(-D${var}=1)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
endmacro()
|
|
Packit Service |
5195f2 |
lzo_check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
|
|
Packit Service |
5195f2 |
lzo_check_function_exists(stat HAVE_STAT)
|
|
Packit Service |
5195f2 |
lzo_check_function_exists(strncasecmp HAVE_STRNCASECMP)
|
|
Packit Service |
5195f2 |
lzo_check_function_exists(strnicmp HAVE_STRNICMP)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
set(big_endian)
|
|
Packit Service |
5195f2 |
TEST_BIG_ENDIAN(big_endian)
|
|
Packit Service |
5195f2 |
if ("${big_endian}" MATCHES "^1$")
|
|
Packit Service |
5195f2 |
add_definitions(-DLZO_ABI_BIG_ENDIAN=1)
|
|
Packit Service |
5195f2 |
elseif ("${big_endian}" MATCHES "^0$")
|
|
Packit Service |
5195f2 |
add_definitions(-DLZO_ABI_LITTLE_ENDIAN=1)
|
|
Packit Service |
5195f2 |
else()
|
|
Packit Service |
5195f2 |
message(FATAL_ERROR "ERROR: TEST_BIG_ENDIAN failed.")
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
# "make install"
|
|
Packit Service |
5195f2 |
#
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
# subdirs relative to CMAKE_INSTALL_PREFIX
|
|
Packit Service |
5195f2 |
if(NOT DEFINED install_doc_subdir)
|
|
Packit Service |
5195f2 |
set(install_doc_subdir doc)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(NOT DEFINED install_include_subdir)
|
|
Packit Service |
5195f2 |
set(install_include_subdir include)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(NOT DEFINED install_lib_subdir)
|
|
Packit Service |
5195f2 |
set(install_lib_subdir lib)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(NOT DEFINED install_examples_subdir)
|
|
Packit Service |
5195f2 |
set(install_examples_subdir libexec/lzo-examples)
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
set(doc_DATA AUTHORS COPYING NEWS THANKS doc/LZO.FAQ doc/LZO.TXT doc/LZOAPI.TXT)
|
|
Packit Service |
5195f2 |
set(pkginclude_HEADERS
|
|
Packit Service |
5195f2 |
include/lzo/lzo1.h include/lzo/lzo1a.h include/lzo/lzo1b.h
|
|
Packit Service |
5195f2 |
include/lzo/lzo1c.h include/lzo/lzo1f.h include/lzo/lzo1x.h
|
|
Packit Service |
5195f2 |
include/lzo/lzo1y.h include/lzo/lzo1z.h include/lzo/lzo2a.h
|
|
Packit Service |
5195f2 |
include/lzo/lzo_asm.h include/lzo/lzoconf.h include/lzo/lzodefs.h
|
|
Packit Service |
5195f2 |
include/lzo/lzoutil.h
|
|
Packit Service |
5195f2 |
)
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
install(FILES ${doc_DATA} DESTINATION ${install_doc_subdir})
|
|
Packit Service |
5195f2 |
install(FILES ${pkginclude_HEADERS} DESTINATION ${install_include_subdir}/lzo)
|
|
Packit Service |
5195f2 |
if(ENABLE_STATIC)
|
|
Packit Service |
5195f2 |
install(TARGETS lzo_static DESTINATION ${install_lib_subdir})
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(ENABLE_SHARED)
|
|
Packit Service |
5195f2 |
install(TARGETS lzo_shared DESTINATION ${install_lib_subdir})
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
if(0)
|
|
Packit Service |
5195f2 |
set(lzo_EXAMPLES lzopack lzotest simple)
|
|
Packit Service |
5195f2 |
if(NOT ENABLE_STATIC)
|
|
Packit Service |
5195f2 |
set(d "${CMAKE_INSTALL_PREFIX}/${install_lib_subdir}")
|
|
Packit Service |
5195f2 |
set_target_properties(${lzo_EXAMPLES} PROPERTIES INSTALL_RPATH "${d}")
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
install(TARGETS ${lzo_EXAMPLES} DESTINATION ${install_examples_subdir})
|
|
Packit Service |
5195f2 |
endif()
|
|
Packit Service |
5195f2 |
|
|
Packit Service |
5195f2 |
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
|