CodeCompass
/
Config.cmake
115 строк · 4.1 Кб
1# Set a default build type if none was specified
2set(DEFAULT_BUILD_TYPE "RelWithDebInfo")
3if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
4message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.")
5set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build." FORCE)
6# Set the possible values of build type for cmake-gui
7set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
8endif()
9
10# Installation directory for libraries
11set(INSTALL_LIB_DIR_NAME "lib")
12set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR_NAME}")
13
14# Installation directory for parser libraries
15set(INSTALL_PARSER_DIR_NAME "parserplugin")
16set(INSTALL_PARSER_DIR "${INSTALL_LIB_DIR}/${INSTALL_PARSER_DIR_NAME}")
17
18# Installation directory for service libraries
19set(INSTALL_SERVICE_DIR_NAME "serviceplugin")
20set(INSTALL_SERVICE_DIR "${INSTALL_LIB_DIR}/${INSTALL_SERVICE_DIR_NAME}")
21
22# Installation directory for authentication libraries
23set(INSTALL_AUTH_DIR_NAME "authplugin")
24set(INSTALL_AUTH_DIR "${INSTALL_LIB_DIR}/${INSTALL_AUTH_DIR_NAME}")
25
26# Installation directory of web GUI
27set(INSTALL_WEBROOT_DIR "${CMAKE_INSTALL_PREFIX}/share/codecompass/webgui")
28
29# Installation directory of the new React-based web GUI
30set(INSTALL_WEBROOT_REACT_DIR "${CMAKE_INSTALL_PREFIX}/share/codecompass/webgui-new")
31
32# Installation directory of SQL files
33set(INSTALL_SQL_DIR "${CMAKE_INSTALL_PREFIX}/share/codecompass/sql")
34
35# Global variable to collect userguides
36define_property(GLOBAL PROPERTY USERGUIDES
37BRIEF_DOCS "Global list of userguides"
38FULL_DOCS "Global list of userguides")
39set_property(GLOBAL PROPERTY USERGUIDES
40"${CMAKE_CURRENT_SOURCE_DIR}/webgui/userguide/userguide.md")
41
42# Installation directory of third-party JS scripts
43set(INSTALL_WEBPLUGIN_DIR "${INSTALL_WEBROOT_DIR}/scripts/plugins")
44
45# Installation directory of GUI scripts
46set(INSTALL_SCRIPTS_DIR "${INSTALL_WEBROOT_DIR}/scripts/codecompass")
47
48# Installation directory of generated Thrift API stubs
49set(INSTALL_GEN_DIR "${INSTALL_SCRIPTS_DIR}/generated")
50
51# Installation directory for Java libraries
52set(INSTALL_JAVA_LIB_DIR "${INSTALL_LIB_DIR}/java")
53
54# Installation directory for executables
55set(INSTALL_BIN_DIR "bin")
56
57set(DATABASE sqlite CACHE STRING "Database type")
58string(TOUPPER ${DATABASE} DATABASE_U)
59
60# Set up the dynamic libraries' runtime path to the install folder
61set(CMAKE_SKIP_BUILD_RPATH FALSE)
62set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
63string(CONCAT CMAKE_INSTALL_RPATH
64".;$ORIGIN;..;$ORIGIN/.."
65";../${INSTALL_LIB_DIR_NAME}"
66";$ORIGIN/../${INSTALL_LIB_DIR_NAME}"
67";../${INSTALL_LIB_DIR_NAME}/${INSTALL_PARSER_DIR_NAME}"
68";$ORIGIN/../${INSTALL_LIB_DIR_NAME}/${INSTALL_PARSER_DIR_NAME}"
69";../${INSTALL_LIB_DIR_NAME}/${INSTALL_SERVICE_DIR_NAME}"
70";$ORIGIN/../${INSTALL_LIB_DIR_NAME}/${INSTALL_SERVICE_DIR_NAME}"
71";../${INSTALL_LIB_DIR_NAME}/${INSTALL_AUTH_DIR_NAME}"
72";$ORIGIN/../${INSTALL_LIB_DIR_NAME}/${INSTALL_AUTH_DIR_NAME}")
73set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
74
75# Odb commands
76set(ODB odb)
77set(ODBFLAGS
78--std c++11
79--database ${DATABASE}
80--generate-query
81--generate-schema
82--schema-format sql
83--sql-file-suffix -odb
84--pgsql-server-version 9.1
85--include-prefix model/
86--include-with-brackets
87--default-pointer "std::shared_ptr")
88
89# Set CXX standard
90set(CMAKE_CXX_STANDARD 14)
91set(CMAKE_CXX_STANDARD_REQUIRED ON)
92set(CMAKE_CXX_EXTENSIONS OFF)
93
94# Set CXX flags
95set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -pedantic\
96-DDATABASE_${DATABASE_U} \
97-DBOOST_LOG_DYN_LINK")
98
99# Gold is the primary linker
100if(NOT DEFINED CODECOMPASS_LINKER)
101set(CODECOMPASS_LINKER "gold")
102endif()
103
104set(CMAKE_LINKER "${CODECOMPASS_LINKER}")
105
106# Cmake module directory (FindOdb, FindThrift etc.)
107set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}")
108
109# Set build type specific flags here. Default values are:
110# CMAKE_CXX_FLAGS_DEBUG: -g
111# CMAKE_CXX_FLAGS_RELEASE: -O3 -DNDEBUG
112# CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O2 -g -DNDEBUG
113# CMAKE_CXX_FLAGS_MINSIZEREL: -Os -DNDEBUG
114set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb3")
115set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -ggdb3 -DNDEBUG")
116