CMakeLists.txt 2.67 KB
Newer Older
1 2
cmake_minimum_required(VERSION 3.1)
set(CMAKE_C_STANDARD 99)
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
3 4 5
include(CheckIncludeFiles)
include(TestBigEndian)
include(CheckCSourceCompiles)
6
include(CheckSymbolExists)
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
7
include(cmake/macros.cmake)
8 9 10 11 12 13 14 15

option(AEC_FUZZING "Enable build of fuzzing targets" OFF)
if(AEC_FUZZING)
  project(libaec C CXX)
else(AEC_FUZZING)
  project(libaec C)
endif(AEC_FUZZING)

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
16 17
set(libaec_VERSION_MAJOR 1)
set(libaec_VERSION_MINOR 0)
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
18
set(libaec_VERSION_PATCH 2)
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
19 20
set(CMAKE_BUILD_TYPE Release)
enable_testing()
21

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
22 23 24 25 26 27 28 29 30
check_include_files(malloc.h HAVE_MALLOC_H)
check_include_files(stdint.h HAVE_STDINT_H)
test_big_endian(WORDS_BIGENDIAN)
check_clzll(HAVE_DECL___BUILTIN_CLZLL)
if(NOT HAVE_DECL___BUILTIN_CLZLL)
  check_bsr64(HAVE_BSR64)
endif(NOT HAVE_DECL___BUILTIN_CLZLL)
find_inline_keyword()
find_restrict_keyword()
31

32 33 34 35 36 37
check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF)
if(NOT HAVE_SNPRINTF)
  check_symbol_exists(_snprintf "stdio.h" HAVE__SNPRINTF)
  check_symbol_exists(_snprintf_s "stdio.h" HAVE__SNPRINTF_S)
endif(NOT HAVE_SNPRINTF)

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
38
configure_file(
39
  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.in
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
40 41
  ${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_definitions("-DHAVE_CONFIG_H")
42

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
43 44 45 46 47 48 49 50 51
option(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
if(BUILD_SHARED_LIBS)
  set (LIB_TYPE SHARED)
else(BUILD_SHARED_LIBS)
  if(WIN32)
    message(WARNING "You will have to modify libaec.h for static libs.")
  endif(WIN32)
  set(LIB_TYPE STATIC)
endif(BUILD_SHARED_LIBS)
52

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
53 54 55 56
set(libaec_SRCS
  ${PROJECT_SOURCE_DIR}/src/encode.c
  ${PROJECT_SOURCE_DIR}/src/encode_accessors.c
  ${PROJECT_SOURCE_DIR}/src/decode.c)
57

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
58 59
include_directories("${PROJECT_BINARY_DIR}")
include_directories("${PROJECT_SOURCE_DIR}/src")
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
60

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
61 62 63
add_subdirectory(src)
add_subdirectory(tests)
if(AEC_FUZZING)
64
  add_subdirectory(fuzzing)
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
65 66 67 68 69
endif()

set(CPACK_PACKAGE_NAME "libaec")
set(CPACK_PACKAGE_VENDOR "Deutsches Klimarechenzentrum GmbH")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
70
  "libaec - Adaptive Entropy Coding library")
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
71 72 73 74 75
set(CPACK_PACKAGE_VERSION_MAJOR "${libaec_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${libaec_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${libaec_VERSION_PATCH}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "libaec")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/Copyright.txt")
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
76

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
77 78 79 80 81 82
if(WIN32)
  set(CPACK_GENERATOR "WIX")
  set(CPACK_WIX_UPGRADE_GUID "E58A21F6-BB99-46B5-8AD8-6114E4CCA0A6")
  if(CMAKE_CL_64)
    set(CPACK_INSTALL_DIRECTORY "$PROGRAMFILES64")
    set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
83
      "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)")
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
84 85 86
  else(CMAKE_CL_64)
    set(CPACK_INSTALL_DIRECTORY "$PROGRAMFILES")
    set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
87
      "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
88 89
  endif(CMAKE_CL_64)
endif(WIN32)
Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
90

Mathis Rosenhauer's avatar
Mathis Rosenhauer committed
91
include(CPack)