Fixed #139
[platform/upstream/ejdb.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.6)
2 #cmake_policy(VERSION 2.6)
3
4 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
5 set(DEB_CHANGELOG_REQUIRED ON)
6 include(DebChangelog)
7
8 set(PROJECT_NAME "ejdb")
9 set(PROJECT_VENDOR "Softmotions")
10 set(PROJECT_WEBSITE "http://ejdb.org")
11 set(PROJECT_MAINTAINER "Anton Adamansky <adamansky@gmail.com>")
12 set(PROJECT_DESCRIPTION_SUMMARY "Embedded JSON database library (EJDB)")
13 set(PROJECT_DESCRIPTION "EJDB aims to be a fast MongoDB-like library which can be embedded into C/C++ applications under terms of LGPL license.")
14 set(CHANGELOG_MESSAGE ${CHANGELOG_LAST_MESSAGE})
15 set(PROJECT_PPA "ppa:adamansky/ejdb")
16 set(PROJECT_PPA_USER "adamansky")
17 set(PROJECT_PPA_DISTRIB_TARGET vivid utopic trusty precise)
18
19 project(${PROJECT_NAME} C)
20
21 set(PROJECT_VERSION_MAJOR ${CHANGELOG_LAST_VERSION_MAJOR})
22 set(PROJECT_VERSION_MINOR ${CHANGELOG_LAST_VERSION_MINOR})
23 set(PROJECT_VERSION_PATCH ${CHANGELOG_LAST_VERSION_PATCH})
24 set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
25 set(${PROJECT_NAME}_VERSION ${PROJECT_VERSION})
26 set(${PROJECT_NAME}_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
27 set(${PROJECT_NAME}_VERSION_MINOR ${PROJECT_VERSION_MINOR})
28 set(${PROJECT_NAME}_VERSION_PATCH ${PROJECT_VERSION_PATCH})
29
30 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
31 option(BUILD_TESTS "Build test cases" OFF)
32 option(BUILD_SAMPLES "Build ejdb sample projects" OFF)
33 option(PACKAGE_DEB "Build .deb instalation packages" OFF)
34 option(PACKAGE_TGZ "Build .tgz package archive" ON)
35 option(ENABLE_PPA "Enable PPA package build" OFF)
36 option(UPLOAD_PPA "Upload debian packages to the launchpad ppa repository" OFF)
37 option(PPA_DEBIAN_VERSION "PPA version suffix for debian packages" "ppa1")
38
39 if (POLICY CMP0042)
40     cmake_policy(SET CMP0042 NEW)
41 endif(POLICY CMP0042)
42
43 if (CMAKE_SIZEOF_VOID_P MATCHES 8)
44         set(PROJECT_ARCH "x86_64")
45 else(CMAKE_SIZEOF_VOID_P MATCHES 8)
46         set(PROJECT_ARCH "x86")
47 endif(CMAKE_SIZEOF_VOID_P MATCHES 8)
48
49 include(GNUInstallDirs)
50 include(EjdbUtils)
51
52 macro_ensure_out_of_source_build(
53     "${CMAKE_PROJECT_NAME} requires an out of source build."
54 )
55
56 if (BUILD_TESTS) 
57         include(CTest)
58         find_package(CUnit REQUIRED)
59 endif(BUILD_TESTS)
60
61 if (UPLOAD_PPA)
62         set(ENABLE_PPA ON)
63 endif()
64
65 if (NOT ENABLE_PPA)
66         add_subdirectory(src)
67 else()
68         set(PACKAGE_DEB ON)
69 endif()
70
71 set(CPACK_GENERATORS)
72 if (PACKAGE_TGZ)
73         list(APPEND CPACK_GENERATORS "TGZ")
74 endif()
75 if (PACKAGE_DEB)
76         list(APPEND CPACK_GENERATORS "DEB")
77 endif()
78
79 if (CPACK_GENERATORS)
80     set(CPACK_GENERATOR "${CPACK_GENERATORS}")
81         set(CPACK_SOURCE_IGNORE_FILES 
82                 "ejdb\\\\.mk$"
83                 "\\\\.project$"
84                 "\\\\.workspace$"
85                 "\\\\.iml$"
86                 "\\\\.cmake_dirty$"
87                 "ctest\\\\.cmake"
88                 "compile_commands\\\\.json$"
89                 "/Makefile$"
90         )
91         add_subdirectory(installer)
92 endif()
93
94 message("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
95 message("CPACK_GENERATORS: ${CPACK_GENERATORS}")
96 if (MXE_HOME)
97         message("MXE_HOME: ${MXE_HOME}")
98 endif()
99 if (CMAKE_SYSTEM_NAME)
100         message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
101 endif()
102 if (PROJECT_ARCH)
103         message("PROJECT_ARCH: ${PROJECT_ARCH}")
104 endif()
105 message("PROJECT: ${CHANGELOG_LAST_LINE}")
106 if (CHANGELOG_MESSAGE)
107     message("CHANGELOG_MESSAGE:\n  ${CHANGELOG_MESSAGE}")
108 endif()