-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-
-PROJECT(capi-appfw-app-manager C)
-AUX_SOURCE_DIRECTORY(src SOURCES)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(PKGS REQUIRED
- capi-base-common
- dlog
- vconf
- aul
- pkgmgr
- pkgmgr-info
- glib-2.0
- cynara-client)
-FOREACH(FLAGS ${PKGS_CFLAGS})
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
-ENDFOREACH(FLAGS)
-
-SET(INC_DIR include)
-INCLUDE_DIRECTORIES(${INC_DIR})
-
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SOURCES})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PKGS_LDFLAGS})
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Werror -fvisibility=hidden -Wno-error=deprecated-declarations")
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+
+PROJECT(capi-appfw-app-manager)
+
+SET(CMAKE_INSTALL_PREFIX /usr)
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(PC_PREFIX ${PREFIX})
+SET(PC_NAME "capi-appfw-app-manager")
+SET(PC_REQUIRED "capi-base-common")
+SET(PC_LDFLAGS "-lcapi-appfw-app-manager")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-zdefs")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-declarations")
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${FULLVER})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${MAJORVER})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} -fPIC")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
-SET(PC_PREFIX ${CMAKE_INSTALL_PREFIX})
-CONFIGURE_FILE(capi-appfw-app-manager.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc @ONLY)
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR})
+SET(TARGET_APP_MANAGER "capi-appfw-app-manager")
+SET(TARGET_APPMGR_TOOL "appmgr_tool")
-INSTALL(DIRECTORY ${INC_DIR}/ DESTINATION include/appfw
- FILES_MATCHING
- PATTERN "${INC_DIR}/*.h")
+ENABLE_TESTING()
+SET(TARGET_APP_MANAGER_UNITTESTS "app-manager_unittests")
+ADD_TEST(NAME ${TARGET_APP_MANAGER_UNITTESTS}
+ COMMAND ${TARGET_APP_MANAGER_UNITTESTS}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/app-manager_unittests)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+INCLUDE(FindPkgConfig)
+INCLUDE(ApplyPkgConfig)
+
+PKG_CHECK_MODULES(AUL_DEPS REQUIRED aul)
+PKG_CHECK_MODULES(CAPI_BASE_COMMON_DEPS REQUIRED capi-base-common)
+PKG_CHECK_MODULES(CYNARA_CLIENT_DEPS REQUIRED cynara-client)
+PKG_CHECK_MODULES(DLOG_DEPS REQUIRED dlog)
+PKG_CHECK_MODULES(GLIB_DEPS REQUIRED glib-2.0)
+PKG_CHECK_MODULES(PKGMGR_DEPS REQUIRED pkgmgr)
+PKG_CHECK_MODULES(PKGMGR_INFO_DEPS REQUIRED pkgmgr-info)
+PKG_CHECK_MODULES(VCONF_DEPS REQUIRED vconf)
+
+CONFIGURE_FILE(${TARGET_APP_MANAGER}.pc.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_APP_MANAGER}.pc @ONLY)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_APP_MANAGER}.pc
+ DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+
+INSTALL(DIRECTORY include/ DESTINATION include/appfw
+ FILES_MATCHING
+ PATTERN "include/*.h")
+ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(tool)
--- /dev/null
+# Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+#
+# This function applies external (out of source tree) dependencies
+# to given target. Arguments are:
+# TARGET - valid cmake target
+# PRIVACY - dependency can be inherited by dependent targets or not:
+# PUBLIC - this should be used by default, cause compile/link flags passing
+# PRIVATE - do not passes any settings to dependent targets,
+# may be usefull for static libraries from the inside of the project
+# Argument ARGV2 and following are supposed to be names of checked pkg config
+# packages. This function will use variables created by check_pkg_modules().
+# - ${DEP_NAME}_LIBRARIES
+# - ${DEP_NAME}_INCLUDE_DIRS
+# - ${DEP_NAME}_CFLAGS
+#
+FUNCTION(APPLY_PKG_CONFIG TARGET PRIVACY)
+ MATH(EXPR DEST_INDEX "${ARGC}-1")
+ FOREACH(I RANGE 2 ${DEST_INDEX})
+ IF(NOT ${ARGV${I}}_FOUND)
+ MESSAGE(FATAL_ERROR "Not found dependency - ${ARGV${I}}_FOUND")
+ ENDIF(NOT ${ARGV${I}}_FOUND)
+ TARGET_LINK_LIBRARIES(${TARGET} ${PRIVACY} "${${ARGV${I}}_LIBRARIES}")
+ TARGET_INCLUDE_DIRECTORIES(${TARGET} ${PRIVACY} SYSTEM "${${ARGV${I}}_INCLUDE_DIRS}")
+ STRING(REPLACE ";" " " CFLAGS_STR "${${ARGV${I}}_CFLAGS}")
+ SET(CFLAGS_LIST ${CFLAGS_STR})
+ SEPARATE_ARGUMENTS(CFLAGS_LIST)
+ FOREACH(OPTION ${CFLAGS_LIST})
+ TARGET_COMPILE_OPTIONS(${TARGET} ${PRIVACY} ${OPTION})
+ ENDFOREACH(OPTION)
+ SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SKIP_BUILD_RPATH true)
+ ENDFOREACH(I RANGE 2 ${DEST_INDEX})
+ENDFUNCTION(APPLY_PKG_CONFIG TARGET PRIVACY)
--- /dev/null
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} APP_MANAGER_SRCS)
+
+ADD_LIBRARY(${TARGET_APP_MANAGER} SHARED ${APP_MANAGER_SRCS})
+
+SET_TARGET_PROPERTIES(${TARGET_APP_MANAGER} PROPERTIES SOVERSION ${MAJORVER})
+SET_TARGET_PROPERTIES(${TARGET_APP_MANAGER} PROPERTIES VERSION ${FULLVER})
+
+TARGET_INCLUDE_DIRECTORIES(${TARGET_APP_MANAGER} PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../
+ ${CMAKE_CURRENT_SOURCE_DIR}/../include/)
+
+APPLY_PKG_CONFIG(${TARGET_APP_MANAGER} PUBLIC
+ AUL_DEPS
+ CAPI_BASE_COMMON_DEPS
+ CYNARA_CLIENT_DEPS
+ DLOG_DEPS
+ GLIB_DEPS
+ PKGMGR_DEPS
+ PKGMGR_INFO_DEPS
+ VCONF_DEPS
+)
+
+INSTALL(TARGETS ${TARGET_APP_MANAGER} DESTINATION ${LIB_INSTALL_DIR})
-# Test executables
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} APPMGR_TOOL_SRCS)
-#Verbose
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+ADD_EXECUTABLE(${TARGET_APPMGR_TOOL} ${APPMGR_TOOL_SRCS})
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs_test REQUIRED glib-2.0)
-FOREACH(flag ${pkgs_test_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-ADD_EXECUTABLE(appmgr_tool main.c)
-TARGET_LINK_LIBRARIES(appmgr_tool capi-appfw-app-manager ${pkgs_test_LDFLAGS} "-pie")
-INSTALL(TARGETS appmgr_tool DESTINATION bin)
+TARGET_INCLUDE_DIRECTORIES(${TARGET_APPMGR_TOOL} PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../
+ ${CMAKE_CURRENT_SOURCE_DIR}/../include/)
+
+APPLY_PKG_CONFIG(${TARGET_APPMGR_TOOL} PUBLIC
+ GLIB_DEPS
+)
+
+TARGET_LINK_LIBRARIES(${TARGET_APPMGR_TOOL} PRIVATE
+ ${TARGET_APP_MANAGER} "-pie")
+INSTALL(TARGETS ${TARGET_APPMGR_TOOL} DESTINATION bin)