working on #149
[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(PACKAGE_ZIP "Build .zip package archive" ON)
36 option(ENABLE_PPA "Enable PPA package build" OFF)
37 option(UPLOAD_PPA "Upload debian packages to the launchpad ppa repository" OFF)
38 option(PPA_DEBIAN_VERSION "PPA version suffix for debian packages" "ppa1")
39 option("PROJECT_PPA_DISTRIB_TARGET" "Ubuntu PPA distrubutive names" "vivid;utopic;trusty;precise")
40
41 if (POLICY CMP0042)
42     cmake_policy(SET CMP0042 NEW)
43 endif(POLICY CMP0042)
44
45 if (CMAKE_SIZEOF_VOID_P MATCHES 8)
46         set(PROJECT_ARCH "x86_64")
47         add_definitions("-D_FILE_OFFSET_BITS=64")
48 else(CMAKE_SIZEOF_VOID_P MATCHES 8)
49         set(PROJECT_ARCH "x86")
50 endif(CMAKE_SIZEOF_VOID_P MATCHES 8)
51
52 include(GNUInstallDirs)
53 include(EjdbUtils)
54
55 macro_ensure_out_of_source_build(
56     "${CMAKE_PROJECT_NAME} requires an out of source build."
57 )
58
59 if (BUILD_TESTS) 
60         include(CTest)
61         find_package(CUnit REQUIRED)
62 endif(BUILD_TESTS)
63
64 if (UPLOAD_PPA)
65         set(ENABLE_PPA ON)
66 endif()
67
68 if (NOT ENABLE_PPA)
69         add_subdirectory(src)
70 else()
71         set(PACKAGE_DEB ON)
72 endif()
73
74 set(CPACK_GENERATORS)
75 if (PACKAGE_TGZ)
76         list(APPEND CPACK_GENERATORS "TGZ")
77 endif()
78 if (PACKAGE_ZIP)
79         list(APPEND CPACK_GENERATORS "ZIP")
80 endif()
81 if (PACKAGE_DEB)
82         list(APPEND CPACK_GENERATORS "DEB")
83 endif()
84
85 if (CPACK_GENERATORS)
86     set(CPACK_GENERATOR "${CPACK_GENERATORS}")
87         set(CPACK_SOURCE_IGNORE_FILES 
88                 "ejdb\\\\.mk$"
89                 "\\\\.project$"
90                 "\\\\.workspace$"
91                 "\\\\.iml$"
92                 "\\\\.cmake_dirty$"
93                 "ctest\\\\.cmake"
94                 "compile_commands\\\\.json$"
95                 "/Makefile$"
96         )
97         add_subdirectory(installer)
98 endif()
99
100 message("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
101 message("CPACK_GENERATORS: ${CPACK_GENERATORS}")
102 if (MXE_HOME)
103         message("MXE_HOME: ${MXE_HOME}")
104 endif()
105 if (CMAKE_SYSTEM_NAME)
106         message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
107 endif()
108 if (PROJECT_ARCH)
109         message("PROJECT_ARCH: ${PROJECT_ARCH}")
110 endif()
111 message("PROJECT: ${CHANGELOG_LAST_LINE}")
112 if (CHANGELOG_MESSAGE)
113     message("CHANGELOG_MESSAGE:\n  ${CHANGELOG_MESSAGE}")
114 endif()