Refactor ALLOW_NO_SIGNATURE compile flag
[src/app-framework-main.git] / CMakeLists.txt
index 504162b..191725a 100644 (file)
@@ -1,5 +1,5 @@
 ###########################################################################
-# Copyright 2015 IoT.bzh
+# Copyright (C) 2015-2020 IoT.bzh
 #
 # author: José Bollo <jose.bollo@iot.bzh>
 #
 # limitations under the License.
 ###########################################################################
 
-cmake_minimum_required(VERSION 2.8)
-
-project("afm-main" LANGUAGES "C")
-
-set(afm_name                "aglfwk")
-set(afm_confdir             "${sysconfdir}/${afm_name}")
-set(afm_datadir             "${datadir}/$(afm_name}")
-set(afm_appdir              "${afm_datadir}/applications")
-set(afm_icondir             "${afm_datadir}/icons")
-set(afm_prefix              "urn:agl:")
-set(afm_prefix_permission   "${afm_prefix}perm:")
-set(afm_prefix_plugin       "${afm_prefix}plugin:")
-set(afm_user_appdir         "app-data")
-set(wgtpkg_trusted_cert_dir "${afm_confdir}/certs")
-
-macro(defstr name value)
-       add_definitions("-D${name}=\"${value}\"")
-endmacro(defstr)
-
-defstr(FWK_CONFIG_DIR          "${afm_confdir}")
-defstr(FWK_PREFIX_PERMISSION   "${afm_prefix_permission}")
-defstr(FWK_PREFIX_PLUGIN       "${afm_prefix_plugin}")
-defstr(FWK_ICON_DIR            "${afm_icondir}")
-defstr(FWK_APP_DIR             "${afm_appdir}")
-defstr(FWK_USER_APP_DIR        "${afm_user_appdir}")
-defstr(WGTPKG_TRUSTED_CERT_DIR "${wgtpkg_trusted_cert_dir}")
+cmake_minimum_required(VERSION 3.4.3)
+
+project(afm-main C)
+
+include(GNUInstallDirs)
+include(CTest)
+
+set(PROJECT_NAME "AFM Main")
+set(PROJECT_PRETTY_NAME "Application Framework Main")
+set(PROJECT_DESCRIPTION "Secured Application framework for Automotive Grade Linux")
+set(AGLVERSION "8.0.0" CACHE STRING "Version of AGL")
+set(PROJECT_VERSION ${AGLVERSION} CACHE STRING "Version of the project can override AGLVERSION")
+set(PROJECT_URL "https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-main.git;a=summary")
+
+option(DISTINCT_VERSIONS  "Should the version of application be distinguished" OFF)
+option(USE_LIBZIP         "Should try to use libzip?" ON)
+option(USE_SIMULATION     "If set simulates security manager and smack" OFF)
+option(USE_SDK            "If set, avoids installating system runtime files" OFF)
+option(ALLOW_NO_SIGNATURE "If set, widgets without signature are accepted" OFF)
+
+option(SIMULATE_SECMGR    "If set, the security manager is simulated" OFF)
+option(SIMULATE_SMACK     "If set, the smack environment is simulated"  OFF)
+
+option(LEGACY_USER_DAEMON "compile and install the legacy afm-user-daemon" OFF)
+
+set(afm_name                "afm" CACHE STRING "Name for application framework user")
+set(afm_confdir             "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${afm_name}" CACHE STRING "Directory for configuration files")
+set(afm_datadir             "${CMAKE_INSTALL_FULL_DATADIR}/${afm_name}" CACHE STRING "Root directory for installions")
+set(afm_libexecdir          "${CMAKE_INSTALL_FULL_LIBEXECDIR}/${afm_name}" CACHE STRING "Directory for installing internal binaries")
+set(afm_appdir              "${afm_datadir}/applications" CACHE STRING "Directory for installing applications")
+set(afm_icondir             "${afm_datadir}/icons" CACHE STRING "Directory for installing icons")
+set(afm_prefix              "urn:AGL:" CACHE STRING "Prefix for uniform resource name")
+set(afm_user_appdir         "app-data" CACHE STRING "User subdirectory for applications")
+set(afm_user_appdir_label   "User::App-Shared" CACHE STRING "Smack label of the user subdirectory for applications")
+set(systemd_units_root      "${CMAKE_INSTALL_FULL_LIBDIR}/systemd" CACHE STRING "Place where unit files are to be set")
+set(wgtpkg_trusted_cert_dir "${afm_confdir}/certs" CACHE STRING "Path to internal certificates")
+set(afm_platform_rundir     "/run/platform" CACHE STRING "Path to location of platform runtime sockets")
+set(afm_users_rundir        "/run/user" CACHE STRING "Path to location of users runtime sockets")
+set(afm_scope_platform_dir  "/var/scope-platform" CACHE STRING "Path to home of scope-platform apps")
+
+if(USE_SIMULATION)
+    set(SIMULATE_SECMGR ON)
+    set(SIMULATE_SMACK  ON)
+endif(USE_SIMULATION)
+
+add_definitions(
+       -DFWK_CONFIG_DIR="${afm_confdir}"
+       -DFWK_PREFIX="${afm_prefix}"
+       -DFWK_ICON_DIR="${afm_icondir}"
+       -DFWK_APP_DIR="${afm_appdir}"
+       -DFWK_USER_APP_DIR="${afm_user_appdir}"
+       -DWGTPKG_TRUSTED_CERT_DIR="${wgtpkg_trusted_cert_dir}"
+       -DFWK_LAUNCH_CONF="${afm_confdir}/afm-launch.conf"
+       -DFWK_UNIT_CONF="${afm_confdir}/afm-unit.conf"
+       -DFWK_USER_APP_DIR_LABEL="${afm_user_appdir_label}"
+       -DSYSTEMD_UNITS_ROOT="${systemd_units_root}"
+       -DAFM_VERSION="${PROJECT_VERSION}"
+)
+if(ALLOW_NO_SIGNATURE)
+       add_definitions(-DALLOW_NO_SIGNATURE=1)
+endif(ALLOW_NO_SIGNATURE)
+if(DISTINCT_VERSIONS)
+       add_definitions(-DDISTINCT_VERSIONS=1)
+else(DISTINCT_VERSIONS)
+       add_definitions(-DDISTINCT_VERSIONS=0)
+endif(DISTINCT_VERSIONS)
 
 add_subdirectory(src)
+add_subdirectory(conf)
+add_subdirectory(scripts)
+add_subdirectory(certs)
+
+############################################################
+# installs the pkgconfig files
+
+CONFIGURE_FILE(afm-main.pc.in afm-main.pc @ONLY)
+INSTALL(FILES
+    ${CMAKE_CURRENT_BINARY_DIR}/afm-main.pc
+    DESTINATION
+    ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+    )