2 # Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 # Licensed under the Apache License, Version 2.0(the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
16 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack")
18 FILE(GLOB BUILDER_SRCS krate-builder.cpp)
20 PKG_CHECK_MODULES(BUILDER_DEPS REQUIRED
25 FILE(GLOB PAM_SRCS krate.cpp)
27 SET(PAM_NAME pam_${PROJECT_NAME})
28 ADD_LIBRARY(${PAM_NAME} MODULE ${PAM_SRCS} ${BUILDER_SRCS})
30 SET_TARGET_PROPERTIES(${PAM_NAME} PROPERTIES PREFIX ""
31 COMPILE_DEFINITIONS PID_FILE_PATH="${RUN_INSTALL_DIR}/krate"
32 COMPILE_FLAGS "-fvisibility=hidden"
35 FIND_PATH(PAM_INCLUDE_DIR NAMES security/pam_appl.h security/pam_ext.h security/pam_modules.h
36 HINTS ${PAM_ROOT_DIR} PATH_SUFFIXES include)
37 FIND_LIBRARY(PAM_LIBRARY pam HINTS ${PAM_ROOT_DIR} PATH_SUFFIXES ${LIB_INSTALL_DIR})
38 MARK_AS_ADVANCED(PAM_INCLUDE_DIR PAM_LIBRARY)
40 INCLUDE(FindPackageHandleStandardArgs)
41 FIND_PACKAGE_HANDLE_STANDARD_ARGS(PAM DEFAULT_MSG PAM_LIBRARY PAM_INCLUDE_DIR)
43 INCLUDE_DIRECTORIES(${PAM_INCLUDE_DIR} ${BUILDER_DEPS_INCLUDE_DIRS})
45 TARGET_LINK_LIBRARIES(${PAM_NAME} ${PAM_LIBRARY} ${BUILDER_DEPS_LIBRARIES})
47 FILE(GLOB MOUNT_SRCS krate-mount.cpp)
49 SET(MOUNT_NAME ${PROJECT_NAME}-mount)
50 ADD_EXECUTABLE(${MOUNT_NAME} ${MOUNT_SRCS} ${BUILDER_SRCS})
52 TARGET_LINK_LIBRARIES(${MOUNT_NAME} ${MOUNT_SRC} ${BUILDER_DEPS_LIBRARIES})
54 CONFIGURE_FILE(systemd/${MOUNT_NAME}.service.in systemd/${MOUNT_NAME}.service)
56 INSTALL(TARGETS ${PAM_NAME} DESTINATION ${LIB_INSTALL_DIR}/security)
57 INSTALL(TARGETS ${MOUNT_NAME} DESTINATION ${BIN_DIR})
58 INSTALL(FILES systemd/${MOUNT_NAME}.service DESTINATION ${SYSTEMD_USER_UNIT_DIR})