-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
131 lines (109 loc) · 4.04 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
cmake_minimum_required(VERSION 3.10)
project(CaravelLib VERSION 0.2.0 LANGUAGES CXX DESCRIPTION "Caravel-PM's backend.")
find_package(PkgConfig REQUIRED)
find_package(CURL REQUIRED)
find_Package(LibArchive REQUIRED)
find_package(SQLite3 REQUIRED)
option(WITH_BACKEND "Builds the Caravel PackageKit backend." OFF)
option(WITH_BIN_TYPE "Builds the Caravel Binary Type Plugin." OFF)
option(WITH_CONFIG_TYPE "Builds the Caravel Dotfile Type Plugin." OFF)
option(WITH_ASSETS_TYPE "Builds the Caravel Assets Type Plugin." OFF)
option(WITH_CARAVELSCRIPT "Builds the CaravelScript Interpreter." ON)
include_directories("./src")
include_directories(${CMAKE_INSTALL_PREFIX}/include/LuaCpp)
include_directories(${CMAKE_INSTALL_PREFIX}/include/mast_tk/core)
include_directories(${SQLITE3_INCLUDE_DIR})
include_directories(${CMAKE_INSTALL_PREFIX}/include/readline)
file(GLOB CVL_SRCS src/core/*.cpp)
file(GLOB CVL_HDRS src/core/*.h src/core/*.hpp)
set(CMAKE_CXX_STANDARD 17)
set(CM_FOLDER "cmake-3.22")
set(caraveltarget CaravelLib)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_library(CaravelLib SHARED ${CVL_SRCS} ${CVL_PA_SRCS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
configure_file(libcaravel.pc.in libcaravel.pc @ONLY)
configure_file(FindCaravelLib.cmake.in FindCaravelLib.cmake @ONLY)
target_link_libraries(
CaravelLib
PUBLIC
curl
archive
luacpp
INIReader
mast_tk_core
sqlite3
readline
dl
gpgme
)
if (WITH_BACKEND)
find_package(GTK2 REQUIRED)
file(GLOB CVL_PK_SRCS src/pk/*.cpp)
file(GLOB CVL_PK_HDRS src/pk/*.h src/pk/*.hpp)
include_directories(${GTK2_INCLUDE_DIRS})
include_directories(${CMAKE_INSTALL_PREFIX}/include/PackageKit)
add_library(pk_backend_caravel SHARED ${CVL_PK_SRCS})
target_link_libraries(pk_backend_caravel
PRIVATE
CaravelLib
PUBLIC
-lpackagekit-glib2
)
endif()
if (WITH_CARAVELSCRIPT)
find_package(GTK2 REQUIRED)
file(GLOB CVL_CS_SRCS src/caravelscript/*.cpp)
include_directories(${GTK2_INCLUDE_DIRS})
add_executable(caravelscript ${CVL_CS_SRCS})
target_link_libraries(caravelscript
PRIVATE
CaravelLib
)
endif()
if (WITH_BIN_TYPE)
set(CVL_BINARY_SRC src/core/plugins/BinariesType.cpp)
add_library(caravel_binary_type SHARED ${CVL_BINARY_SRC})
target_include_directories(caravel_binary_type PUBLIC $<INSTALL_INTERFACE:include/caravel>)
target_link_libraries(caravel_binary_type
PRIVATE
CaravelLib
)
endif()
if (WITH_CONFIG_TYPE)
set(CVL_CONFIG_SRC src/core/plugins/ConfigType.cpp)
add_library(caravel_config_type SHARED ${CVL_CONFIG_SRC})
target_include_directories(caravel_config_type PUBLIC $<INSTALL_INTERFACE:include/caravel>)
target_link_libraries(caravel_config_type
PRIVATE
CaravelLib
)
endif()
if (WITH_ASSETS_TYPE)
set(CVL_ASSETS_SRC src/core/plugins/AssetsType.cpp)
add_library(caravel_assets_type SHARED ${CVL_ASSETS_SRC})
target_include_directories(caravel_assets_type PUBLIC $<INSTALL_INTERFACE:include/caravel>)
target_link_libraries(caravel_assets_type
PRIVATE
CaravelLib
)
endif()
install(TARGETS CaravelLib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(FILES ${CVL_HDRS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/caravel/)
install(FILES build/libcaravel.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/)
install(FILES build/FindCaravelLib.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/share/${CM_FOLDER}/Modules)
if(WITH_BACKEND)
install(TARGETS pk_backend_caravel DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/packagekit-backend)
endif()
if(WITH_BIN_TYPE)
install(TARGETS caravel_binary_type DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/caravel-plugins)
endif()
if(WITH_CONFIG_TYPE)
install(TARGETS caravel_config_type DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/caravel-plugins)
endif()
if(WITH_ASSETS_TYPE)
install(TARGETS caravel_assets_type DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/caravel-plugins)
endif()
if(WITH_CARAVELSCRIPT)
install(TARGETS caravelscript DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif()