forked from redvw/smf-spf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
77 lines (68 loc) · 1.79 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
cmake_minimum_required(VERSION 3.5)
project(smf-spf C)
# Executable name
set(EXE smf-spf)
# Sources
set(SRC smf-spf.c)
# User/group name for installation
set(SMFS smfs)
# Main program
add_executable(${EXE} ${SRC})
# Compiler flags
if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
include(CheckCCompilerFlag)
check_c_compiler_flag(-fomit-frame-pointer FLAG_OFP)
if(FLAG_OFP)
target_compile_options(${EXE} PRIVATE -fomit-frame-pointer)
endif()
endif()
target_compile_options(${EXE}
PRIVATE
$<$<CONFIG:Debug>:-O0>
${OPTFLAGS}
-Wall -Wextra -pedantic
)
# Link libraries
# pthreads
set(THREADS_PREFER_PTHREAD_FLAG ON)
set(CMAKE_THREAD_PREFER_PTHREAD ON)
find_package(Threads REQUIRED)
target_link_libraries(${EXE} Threads::Threads) # sets -D_REENTRANT
# libmilter
find_library(LIBMILTER milter)
if(NOT LIBMILTER)
message(FATAL_EROR "libmilter not found")
endif()
find_file(MFAPI_H libmilter/mfapi.h)
if(NOT MFAPI_H)
message(FATAL_ERROR "libmilter/mfapi.h not found")
endif()
target_link_libraries(${EXE} ${LIBMILTER})
# libspf2
find_library(LIBSPF2 spf2)
if(NOT LIBSPF2)
message(FATAL_ERROR "libspf2 not found")
endif()
find_file(SPF_H spf2/spf.h)
if(NOT SPF_H)
message(FATAL_ERROR "spf2/spf.h not found")
endif()
target_link_libraries(${EXE} ${LIBSPF2})
# Installation
include(GNUInstallDirs)
install(TARGETS ${EXE} DESTINATION ${CMAKE_INSTALL_SBINDIR})
install(DIRECTORY
DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/run
DIRECTORY_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
)
install(CODE
"execute_process(COMMAND
${CMAKE_CURRENT_SOURCE_DIR}/add-smfs-user.sh)
execute_process(COMMAND
chown ${SMFS}:${SMFS} ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run
)"
)
install(FILES ${EXE}.conf
DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/mail/${SMFS}
RENAME ${EXE}.conf.default
)