-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
100 lines (85 loc) · 3.57 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
cmake_minimum_required(VERSION 3.5)
project(GTKCrypto)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(GTKCRYPTO_VERSION_MAJOR "1")
set(GTKCRYPTO_VERSION_MINOR "0")
set(GTKCRYPTO_VERSION_PATCH "3")
set(GTKCRYPTO_VERSION "${GTKCRYPTO_VERSION_MAJOR}.${GTKCRYPTO_VERSION_MINOR}.${GTKCRYPTO_VERSION_PATCH}")
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "-Wall -Wextra -O2 -Wformat=2 -Wmissing-format-attribute -fstack-protector-strong -Wundef -Wmissing-format-attribute")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always -Wstrict-prototypes -Wunreachable-code")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wchar-subscripts -Wwrite-strings -Wpointer-arith -Wbad-function-cast -Wcast-align")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=format-security -Werror=implicit-function-declaration -Wno-sign-compare")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
# libgpgme need Largefile support
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64")
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pie -fPIE")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
endif()
find_package(PkgConfig REQUIRED)
find_package(Gcrypt 1.7.0 REQUIRED)
find_package(Gpgme 1.8.0 REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0>=3.20.0)
include_directories(${GTK3_INCLUDE_DIRS}
${GCRYPT_INCLUDE_DIR}
${GPGME_INCLUDE_DIR})
link_directories(${GTK3_LIBRARY_DIRS}
${GCRYPT_LIBRARY_DIR}
${GPGME_LIBRARY_DIR})
add_definitions(${GTK3_CFLAGS_OTHER}
${GCRYPT_CFLAGS_OTHER}
${GPGME_CFLAGS_OTHER})
set(HEADER_FILES
src/common-callbacks.h
src/common-widgets.h
src/crypt-common.h
src/decrypt-files-cb.h
src/encrypt-files-cb.h
src/gpgme-misc.h
src/gtkcrypto.h
src/hash.h
src/main.h
src/misc-style.h src/cleanup.h)
set(SOURCE_FILES
src/main.c
src/message-dialog.c
src/compare-file-hash-cb.c
src/compute-hash-cb.c
src/choose-file.c
src/common-callbacks.c
src/hash.c
src/misc-style.c
src/get-file-size.c
src/spinner.c
src/common-widgets.c
src/encrypt-file.c
src/mcw-sensitivity.c
src/hmac.c
src/decrypt-file.c
src/crypt-common.c
src/decrypt-files-cb.c
src/gpgme-misc.c
src/sign-file-cb.c
src/verify-signature-cb.c
src/encrypt-files-cb.c
src/app.c
src/cleanup.c
src/text-cb.c
src/get-builder.c)
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES})
target_link_libraries(${PROJECT_NAME}
${GTK3_LIBRARIES}
${GCRYPT_LIBRARIES}
${GPGME_LIBRARIES})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "gtkcrypto")
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
install(FILES data/com.github.paolostivanin.GTKCrypto.desktop DESTINATION share/applications)
install(FILES data/com.github.paolostivanin.GTKCrypto.appdata.xml DESTINATION share/metainfo)
install(FILES src/ui/gtkcrypto.ui DESTINATION share/gtkcrypto)
install(FILES data/icons/com.github.paolostivanin.GTKCrypto.svg DESTINATION share/icons/hicolor/scalable/apps)