-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
132 lines (114 loc) · 5.2 KB
/
CMakeLists.txt
File metadata and controls
132 lines (114 loc) · 5.2 KB
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
cmake_minimum_required(VERSION 3.24.4)
project(HUMMINGBIRD)
#TODO: CLEAN UP THIS FUCKING MESS!!!!!!!!!!!!!!!!!!!!!!!!!!
#TODO: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
set(CMAKE_CXX_STANDARD 23)
message(STATUS "------HUMNMING BIRD------")
message("CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}")
message("CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
message("CMAKE_CURRENT_OUTPUT_DIRECTORY: ${CMAKE_CURRENT_OUTPUT_DIRECTORY}")
message("CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
if (NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
endif ()
if (NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY)
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
endif ()
if (NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
endif ()
set(HUMMINGBIRD_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(HummingBirdCore_DIR ${CMAKE_CURRENT_SOURCE_DIR}/HummingBirdCore)
set(HUMMINGBIRDFRONT_DIR ${HUMMINGBIRD_DIR}/HummingbirdFront)
# Add cmake modules
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
#options
option(HUMMINGBIRD_EXE "With HummingBirdCore exe" OFF)
option(HUMMINGBIRD_KASPER "With HummingBird Kasper exe" ON)
#check if there is an cmake build type
if (NOT CMAKE_BUILD_TYPE)
message("No build type selected, defaulting to Release")
set(CMAKE_BUILD_TYPE Release)
endif ()
if (${CMAKE_BUILD_TYPE} STREQUAL "ASAN")
message("Building with ASAN")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=pointer-compare -g")
set(CMAKE_BUILD_TYPE ASAN)
endif ()
#########HUMMINGBIRD
#library
set(HUMMINGBIRDCOURESTATICFILES
HummingBirdCore/src/stb_image.h
HummingBirdCore/src/CoreRef.h
HummingBirdCore/src/Application.cpp
HummingBirdCore/src/Application.h
HummingBirdCore/src/Log.cpp
HummingBirdCore/src/Log.h
HummingBirdCore/src/Terminal/TerminalWindow.cpp
HummingBirdCore/src/Terminal/TerminalWindow.h
HummingBirdCore/src/UIWindows/Themes/Themes.h
HummingBirdCore/src/UIWindows/Themes/Themes.cpp
HummingBirdCore/src/UIWindows/Themes/ThemeManager.cpp
HummingBirdCore/src/UIWindows/Themes/ThemeManager.h
HummingBirdCore/src/Security/LogInWindow.cpp
HummingBirdCore/src/Security/LogInWindow.h
HummingBirdCore/src/Security/LoginManager.cpp
HummingBirdCore/src/Security/LoginManager.h
HummingBirdCore/src/System/Hosts/EditHostsWindow.h
HummingBirdCore/src/System/Hosts/EditHostsWindow.cpp
HummingBirdCore/src/Utils/UUID.h
HummingBirdCore/src/ApplicationObject.h
HummingBirdCore/src/UIWindows/ContentExplorer.cpp
HummingBirdCore/src/UIWindows/ContentExplorer.h
HummingBirdCore/src/Folder.h
HummingBirdCore/src/UIWindows/LogWindow.h
HummingBirdCore/src/Utils/Input.h
HummingBirdCore/src/Updatable.h
HummingBirdCore/src/UIWindows/Widget/DataViewer.h
HummingBirdCore/src/UIWindows/Widget/MetricsWidget.h
HummingBirdCore/src/Utils/UIUtils.h
HummingBirdCore/src/System/LaunchDaemonsManager.cpp
HummingBirdCore/src/System/LaunchDaemonsManager.h
HummingBirdCore/src/Utils/Plist/PlistUtil.h
HummingBirdCore/src/UIWindows/Widget/AllAddonsWidget.h
HummingBirdCore/src/UIWindows/MainMenuBar.cpp
HummingBirdCore/src/Sql/SqlWindow.cpp
HummingBirdCore/src/Sql/SqlWindow.h
)
add_library(HummingBirdCore STATIC
${HUMMINGBIRDCOURESTATICFILES}
)
#third party
add_subdirectory(vendor)
target_precompile_headers(HummingBirdCore PUBLIC HummingBirdCore/src/PCH/pch.h)
target_include_directories(HummingBirdCore PUBLIC HummingBirdCore/src)
if (HUMMINGBIRD_EXE)
message("Building with HummingBirdCore as exe")
add_executable(HummingBirdCoreExe
${HummingBirdCore_DIR}/src/main.cpp
)
target_link_libraries(HummingBirdCoreExe HummingBirdCore)
target_include_directories(HummingBirdCoreExe PRIVATE HummingBirdCore/src)
else ()
message("Building with HummingBirdCore as lib")
endif ()
set(HUMMINGBIRD_PLUGIN_DIR ${CMAKE_CURRENT_BINARY_DIR}/plugins)
target_include_directories(HummingBirdCore PUBLIC HummingBirdPluginManager/include)
option(HUMMINGBIRD_PLUGINS_WITH_MANAGER "With plugin manager" ON)
if(HUMMINGBIRD_PLUGINS_WITH_MANAGER)
message("Building with plugin manager")
add_subdirectory(HummingBirdPluginManager EXCLUDE_FROM_ALL)
endif()
option(HUMMINGBIRD_PLUGINS_WITH_EXAMPLE "With plugin example" ON)
if(HUMMINGBIRD_PLUGINS_WITH_EXAMPLE)
add_subdirectory(HummingBirdPluginExample EXCLUDE_FROM_ALL)
endif()
########################################################################
# Copying resources from source to build
message("Copying resources from ${CMAKE_CURRENT_SOURCE_DIR}/Assets to ${CMAKE_CURRENT_BINARY_DIR}/Assets")
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/Assets DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
# Copying plugins from source to build
message("Copying plugins from ${CMAKE_CURRENT_SOURCE_DIR}/plugins to ${CMAKE_CURRENT_BINARY_DIR}/plugins")