Use TLS variable for getting status
[platform/core/appfw/aul-1.git] / CMakeLists.txt
index 9cca957..dcd0144 100644 (file)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
-PROJECT(aul C)
-SET(VERSION_MAJOR 0)
-SET(VERSION "${VERSION_MAJOR}.1.0")
-
-### Global setting ###
+PROJECT(aul)
 
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
+SET(LIBDIR ${LIB_INSTALL_DIR})
+SET(INCLUDEDIR "\${prefix}/include")
 SET(EXEC_PREFIX "\${prefix}")
 
-# Build type : Release
-IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
-       SET(CMAKE_BUILD_TYPE "Release")
-ENDIF()
-MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+ADD_DEFINITIONS("-DSHARE_PREFIX=\"${SHARE_INSTALL_PREFIX}/aul\"")
 
-IF (with_wayland)
-       ADD_DEFINITIONS("-DWAYLAND")
-ENDIF (with_wayland)
-IF (with_x11)
-       ADD_DEFINITIONS("-DX11")
-ENDIF (with_x11)
+ADD_DEFINITIONS("-DAPPSVC_DB_VERSION=\"${APPSVC_DB_VERSION}\"")
+ADD_DEFINITIONS("-DCOMPONENT_DB_VERSION=\"${COMPONENT_DB_VERSION}\"")
+ADD_DEFINITIONS("-DLIBDIR=\"${LIBDIR}\"")
 
-# Set required packages
-INCLUDE(FindPkgConfig)
-SET(AUL-1_PKG_CHECK_MODULES dlog app-checker rua glib-2.0 vconf pkgmgr-info privacy-manager-client pkgmgr)
-pkg_check_modules(pkgs REQUIRED  ${AUL-1_PKG_CHECK_MODULES} )
-
-SET(AUL-1_LIB_PKG_CHECK_MODULES dlog bundle dbus-glib-1 ail xdgmime app-checker libtzplatform-config pkgmgr-info libsystemd-daemon security-manager)
-IF (with_wayland)
-       pkg_check_modules(libpkgs REQUIRED ${AUL-1_LIB_PKG_CHECK_MODULES} wayland-client)
-ENDIF (with_wayland)
-IF (with_x11)
-       pkg_check_modules(libpkgs REQUIRED ${AUL-1_LIB_PKG_CHECK_MODULES})
-ENDIF (with_x11)
-
-PKG_CHECK_MODULES(PKGS REQUIRED glib-2.0 gio-2.0 dlog bundle rua)
-
-FIND_LIBRARY(LIB_DL dl)
-
-FOREACH(flag ${libpkgs_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-FOREACH(flag ${pkgs_CFLAGS})
-       SET(TEST_CFLAGS "${TEST_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-# Compiler flags
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/legacy)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/feature)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fpic")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_CFLAGS}")
+## Compile flags
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-zdefs -fvisibility=hidden -g -Wall -Werror -fpic ")
 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
 SET(CMAKE_C_FLAGS_RELEASE "-O2")
 
-SET(CMAKE_SKIP_BUILD_RPATH true)
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} -std=c++17")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
 
-# Get uname value to set 'TARGET' definition 
-# TODO: Is this needed?
-FIND_PROGRAM(UNAME NAMES uname)
-EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
-IF("${ARCH}" STREQUAL "arm")
-       ADD_DEFINITIONS("-DTARGET")
-       MESSAGE("add -DTARGET")
-ENDIF("${ARCH}" STREQUAL "arm")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
 
-ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
-ADD_DEFINITIONS("-DSHARE_PREFIX=\"${SHARE_INSTALL_PREFIX}/aul\"")
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
 
-# Linker flags
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+## Target
+SET(TARGET_AUL "aul")
+SET(TARGET_AUL_SERVER "aul-server")
 
+ENABLE_TESTING()
+SET(TARGET_AUL_UNIT_TESTS "aul-unit-tests")
+SET(TARGET_APP_CONTROL_TESTS "app-control-tests")
 
-### Build ###
-
-# aul_mods : modules (static library)
-SET(SRCS_aul_mods src/app_sock.c src/simple_util.c)
-IF (with_wayland)
-       SET(SRCS_aul_mods ${SRCS_aul_mods} src/tizen-transient-for-protocol.c)
-ENDIF (with_wayland)
-add_library(aul_mods STATIC
-               ${SRCS_aul_mods}
-               )
-
-# aul
-add_library(aul SHARED
-               src/pkginfo.c
-               src/launch.c
-               src/launch_glib.c
-               src/launch_with_result.c
-               src/service.c
-               src/mime.c
-               src/mida.c
-               src/miregex.c
-               src/app_signal.c
-               src/key.c
-               src/status.c
-               src/aul_path.c
-               src/app_group.c
-               )
-target_link_libraries(aul aul_mods ${libpkgs_LDFLAGS})
-SET_TARGET_PROPERTIES(aul PROPERTIES SOVERSION ${VERSION_MAJOR})
-SET_TARGET_PROPERTIES(aul PROPERTIES VERSION ${VERSION})
-
-# launchpad(old avatar) daemon
-SET(AM_SESSION_AGENT_NAME "amd_session_agent")
-add_executable(${AM_SESSION_AGENT_NAME}
-        am_session_agent/agent.c
-        )
-MESSAGE("       "${pkgs_LDFLAGS})
-TARGET_LINK_LIBRARIES(${AM_SESSION_AGENT_NAME} ${PKGS_LDFLAGS} aul aul_mods)
-SET_TARGET_PROPERTIES(${AM_SESSION_AGENT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
-
-set_target_properties(${AM_SESSION_AGENT_NAME}
-               PROPERTIES SKIP_BUILD_RPATH true
-               ) # remove rpath option that is automatically generated by cmake.
-
-add_executable(amd
-                am_daemon/amd_main.c
-               am_daemon/amd_request.c
-               am_daemon/amd_appinfo.c
-               am_daemon/amd_launch.c
-               am_daemon/amd_status.c
-               am_daemon/amd_app_group.c
-                )
-SET(AUL-1_LINK_LIBRARY amd aul_mods app-checker-server glib-2.0 bundle ail aul)
-target_link_libraries(${AUL-1_LINK_LIBRARY} ${pkgs_LDFLAGS})
-
-SET(REL_AGENT daemon-manager-release-agent)
-ADD_EXECUTABLE(${REL_AGENT} agent/${REL_AGENT}.c)
-TARGET_LINK_LIBRARIES(${REL_AGENT} ${PKGS_LDFLAGS} aul aul_mods)
-SET_TARGET_PROPERTIES(${REL_AGENT} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
-
-INSTALL(TARGETS ${REL_AGENT} DESTINATION bin)
-
-SET(LAUNCH_AGENT daemon-manager-launch-agent)
-ADD_EXECUTABLE(${LAUNCH_AGENT} agent/${LAUNCH_AGENT}.c)
-TARGET_LINK_LIBRARIES(${LAUNCH_AGENT} ${PKGS_LDFLAGS})
-SET_TARGET_PROPERTIES(${LAUNCH_AGENT} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
-
-INSTALL(TARGETS ${LAUNCH_AGENT} DESTINATION bin)
-
-
-
-SET(APP_LAUNCHER "app_launcher")
-add_executable(${APP_LAUNCHER}
-               app_launcher.c
-        )
-SET(APP_LAUNCHER_LIBRARY ${APP_LAUNCHER} aul_mods app-checker-server rua glib-2.0 bundle aul pkgmgr-info)
-target_link_libraries(${APP_LAUNCHER_LIBRARY} ${pkgs_LDFLAGS})
-INSTALL(TARGETS app_launcher DESTINATION bin)
+INCLUDE(FindPkgConfig)
+INCLUDE(ApplyPkgConfig)
+
+PKG_CHECK_MODULES(BUNDLE_DEPS REQUIRED bundle)
+PKG_CHECK_MODULES(CAPI_SYSTEM_INFO_DEPS REQUIRED capi-system-info)
+PKG_CHECK_MODULES(CAPI_SYSTEM_RESOURCE_DEPS REQUIRED capi-system-resource)
+PKG_CHECK_MODULES(DLOG_DEPS REQUIRED dlog)
+PKG_CHECK_MODULES(GIO_DEPS REQUIRED gio-2.0)
+PKG_CHECK_MODULES(GLIB_DEPS REQUIRED glib-2.0)
+PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
+PKG_CHECK_MODULES(INIPARSER_DEPS REQUIRED iniparser)
+PKG_CHECK_MODULES(LIBSMACK_DEPS REQUIRED libsmack)
+PKG_CHECK_MODULES(LIBTZPLATFORM_CONFIG_DEPS REQUIRED libtzplatform-config)
+PKG_CHECK_MODULES(LIBXML_DEPS REQUIRED libxml-2.0)
+PKG_CHECK_MODULES(PARCEL_DEPS REQUIRED parcel)
+PKG_CHECK_MODULES(PKGMGR_INFO_DEPS REQUIRED pkgmgr-info)
+PKG_CHECK_MODULES(PKGMGR_INSTALLER_DEPS REQUIRED pkgmgr-installer)
+PKG_CHECK_MODULES(SQLITE3_DEPS REQUIRED sqlite3)
+PKG_CHECK_MODULES(STORAGE_DEPS REQUIRED storage)
+PKG_CHECK_MODULES(TTRACE_DEPS REQUIRED ttrace)
+PKG_CHECK_MODULES(UUID_DEPS REQUIRED uuid)
+PKG_CHECK_MODULES(VCONF_DEPS REQUIRED vconf)
+PKG_CHECK_MODULES(XDGMIME_DEPS REQUIRED xdgmime)
+
+## Target sources
+AUX_SOURCE_DIRECTORY(src SRCS)
+AUX_SOURCE_DIRECTORY(aul AUL_SRCS)
+AUX_SOURCE_DIRECTORY(aul/api AUL_API_SRCS)
+AUX_SOURCE_DIRECTORY(aul/app_control AUL_APP_CONTROL_SRCS)
+AUX_SOURCE_DIRECTORY(aul/app_group AUL_APP_GROUP_SRCS)
+AUX_SOURCE_DIRECTORY(aul/app_info AUL_APP_INFO_SRCS)
+AUX_SOURCE_DIRECTORY(aul/app_manager AUL_APP_MANAGER_SRCS)
+AUX_SOURCE_DIRECTORY(aul/common AUL_COMMON_SRCS)
+AUX_SOURCE_DIRECTORY(aul/component AUL_COMPONENT_SRCS)
+AUX_SOURCE_DIRECTORY(aul/socket AUL_SOCKET_SRCS)
+
+ADD_LIBRARY(${TARGET_AUL} SHARED
+  ${SRCS}
+  ${AUL_SRCS}
+  ${AUL_API_SRCS}
+  ${AUL_APP_CONTROL_SRCS}
+  ${AUL_APP_GROUP_SRCS}
+  ${AUL_APP_MANAGER_SRCS}
+  ${AUL_APP_INFO_SRCS}
+  ${AUL_COMMON_SRCS}
+  ${AUL_COMPONENT_SRCS}
+  ${AUL_SOCKET_SRCS}
+  ${AUL_BOOT_SEQUENCE_SRCS}
+)
+
+TARGET_INCLUDE_DIRECTORIES(${TARGET_AUL} PUBLIC
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/include
+  ${CMAKE_CURRENT_SOURCE_DIR}/include/internal
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/api
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/app_control
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/app_manager
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/common
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/component
+  ${CMAKE_CURRENT_SOURCE_DIR}/aul/socket
+)
+
+SET_TARGET_PROPERTIES(${TARGET_AUL} PROPERTIES SOVERSION ${MAJORVER})
+SET_TARGET_PROPERTIES(${TARGET_AUL} PROPERTIES VERSION ${FULLVER})
+
+APPLY_PKG_CONFIG(${TARGET_AUL} PUBLIC
+  BUNDLE_DEPS
+  CAPI_SYSTEM_INFO_DEPS
+  CAPI_SYSTEM_RESOURCE_DEPS
+  DLOG_DEPS
+  GIO_DEPS
+  GLIB_DEPS
+  INIPARSER_DEPS
+  LIBSMACK_DEPS
+  LIBTZPLATFORM_CONFIG_DEPS
+  LIBXML_DEPS
+  PARCEL_DEPS
+  PKGMGR_INFO_DEPS
+  STORAGE_DEPS
+  TTRACE_DEPS
+  UUID_DEPS
+  VCONF_DEPS
+  XDGMIME_DEPS
+)
+
+INSTALL(TARGETS ${TARGET_AUL} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
 
 # pkgconfig file
 CONFIGURE_FILE(aul.pc.in aul.pc @ONLY)
-CONFIGURE_FILE(legacy/preload_list.txt.in legacy/preload_list.txt @ONLY)
 CONFIGURE_FILE(feature/preexec_list.txt.in feature/preexec_list.txt @ONLY)
-
-### Install ###
-INSTALL(TARGETS aul DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
-INSTALL(TARGETS ${AM_SESSION_AGENT_NAME} DESTINATION bin)
-INSTALL(TARGETS amd DESTINATION bin)
-
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/aul.h DESTINATION include/aul)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/aul_service.h DESTINATION include/aul)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/SLP_AUL_PG.h DESTINATION include/aul)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/aul_service.sh DESTINATION bin)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/aul_service_test.sh DESTINATION bin)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/aul_mime.sh DESTINATION bin)
+CONFIGURE_FILE(data/appsvc_db.sql.in data/appsvc_db.sql @ONLY)
+CONFIGURE_FILE(scripts/12_appsvc-add.post.in scripts/12_appsvc-add.post @ONLY)
+CONFIGURE_FILE(scripts/501.appsvc_db_upgrade.sh.in scripts/501.appsvc_db_upgrade.sh @ONLY)
+CONFIGURE_FILE(scripts/upgrade/1_appsvc_db_upgrade.sh.in scripts/upgrade/1_appsvc_db_upgrade.sh @ONLY)
+CONFIGURE_FILE(scripts/upgrade/2_appsvc_db_upgrade.sh.in scripts/upgrade/2_appsvc_db_upgrade.sh @ONLY)
+
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/501.appsvc_db_upgrade.sh
+  DESTINATION /usr/share/upgrade/scripts)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/upgrade/1_appsvc_db_upgrade.sh
+  DESTINATION /etc/aul/upgrade/scripts)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/upgrade/2_appsvc_db_upgrade.sh
+  DESTINATION /etc/aul/upgrade/scripts)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/aul.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
-
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/legacy/preload_list.txt DESTINATION ${SHARE_INSTALL_PREFIX}/aul )
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/feature/preexec_list.txt DESTINATION ${SHARE_INSTALL_PREFIX}/aul )
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/mida_db.sql DESTINATION ${SHARE_INSTALL_PREFIX}/aul )
 INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/miregex DESTINATION ${SHARE_INSTALL_PREFIX}/aul )
-INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/service DESTINATION ${SHARE_INSTALL_PREFIX}/aul )
-
-# test
-add_subdirectory(test)
-
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/aul.conf DESTINATION /etc/dbus-1/system.d)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/include/  DESTINATION include/aul
+  FILES_MATCHING
+  PATTERN "*.h"
+)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/aul/api/ DESTINATION include/aul/api
+  FILES_MATCHING
+  PATTERN "*.h"
+)
+
+## Sub directories
+ADD_SUBDIRECTORY(parser)
+ADD_SUBDIRECTORY(server)
+ADD_SUBDIRECTORY(test)
+ADD_SUBDIRECTORY(tool)