-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
executable file
·111 lines (92 loc) · 3.45 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
CMAKE_MINIMUM_REQUIRED(VERSION 3.1.3)
PROJECT(go-proj C CXX)
# Set build type
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
OPTION(FLYWAVE_ENABLE_SOLUTION_FOLDERS "Build with UBSAN" ON)
if(FLYWAVE_ENABLE_SOLUTION_FOLDERS)
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
SET_PROPERTY(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
endif()
# Unix specific options
IF(UNIX OR APPLE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall")
ENDIF()
# CXX_STANDARD
SET(CMAKE_CXX_STANDARD 17)
SET(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
IF(UNIX)
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
ENDIF()
ENDIF()
Set(FLYWAVE_BASE_INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs)
IF(APPLE)
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm")
SET(FLYWAVE_LIBRARY_OUTPUT_PATH "${FLYWAVE_BASE_INSTALL_DIR}/darwin_arm")
else()
SET(FLYWAVE_LIBRARY_OUTPUT_PATH "${FLYWAVE_BASE_INSTALL_DIR}/darwin")
endif()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
ELSEIF(WIN32)
SET(FLYWAVE_LIBRARY_OUTPUT_PATH "${FLYWAVE_BASE_INSTALL_DIR}/windows")
ELSE()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
SET(FLYWAVE_LIBRARY_OUTPUT_PATH "${FLYWAVE_BASE_INSTALL_DIR}/linux_arm")
else()
SET(FLYWAVE_LIBRARY_OUTPUT_PATH "${FLYWAVE_BASE_INSTALL_DIR}/linux")
endif()
ENDIF()
MAKE_DIRECTORY(${FLYWAVE_LIBRARY_OUTPUT_PATH})
SET(FLYWAVE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
SET(FLYWAVE_LIBRARY_DIRS "")
#sqlite
IF(NOT SQLITE_INCLUDE)
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/external/libsqlite3")
LIST(APPEND FLYWAVE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/libsqlite3/")
LIST(APPEND FLYWAVE_LIBRARY_DIRS "${CMAKE_CURRENT_BINARY_DIR}/external/libsqlite3/")
LIST(APPEND FLYWAVE_LIBRARY_DEPES "sqlite3")
SET(SQLITE_INCLUDE YES)
ENDIF()
# libproj
IF(NOT PROJ_INCLUDE)
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/external/libproj")
IF (WIN32)
LIST(APPEND FLYWAVE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/libproj/arch/win/src")
ELSE()
LIST(APPEND FLYWAVE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/libproj/arch/unix/src")
ENDIF()
LIST(APPEND FLYWAVE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/libproj/proj/include")
LIST(APPEND FLYWAVE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/libproj/proj/src")
LIST(APPEND FLYWAVE_LIBRARY_DIRS "${CMAKE_CURRENT_BINARY_DIR}/external/libproj/")
LIST(APPEND FLYWAVE_LIBRARY_DEPES "proj")
SET(PROJ_INCLUDE YES)
ENDIF()
LIST(APPEND FLYWAVE_LIBRARY_DIRS "${CMAKE_CURRENT_BINARY_DIR}/src/")
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/src")
foreach(LIBDIR ${FLYWAVE_LIBRARY_DIRS})
INSTALL(
DIRECTORY ${LIBDIR}
DESTINATION ${FLYWAVE_LIBRARY_OUTPUT_PATH}
USE_SOURCE_PERMISSIONS FILE_PERMISSIONS
FILES_MATCHING PATTERN "*.a"
)
endforeach()
INSTALL(
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/external/libproj/proj/src/"
DESTINATION ${FLYWAVE_BASE_INSTALL_DIR}
USE_SOURCE_PERMISSIONS FILE_PERMISSIONS
FILES_MATCHING PATTERN "proj_api.h"
)
INSTALL(
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/"
DESTINATION ${FLYWAVE_BASE_INSTALL_DIR}
USE_SOURCE_PERMISSIONS FILE_PERMISSIONS
FILES_MATCHING PATTERN "*.h"
)