Add core abi capability
[sdk/target/sdbd.git] / CMakeLists.txt
old mode 100644 (file)
new mode 100755 (executable)
index 43b43b8..099b54f
@@ -27,45 +27,91 @@ INCLUDE(FindPkgConfig)
 ############################# compiler flags ##################################
 
 SET(SDBD_SRCS
-       src/sdb.c
-       src/fdevent.c
-       src/transport.c
-       src/transport_local.c
-       src/transport_usb.c
-       src/sockets.c
-       src/services.c
-       src/file_sync_service.c
-       src/usb_linux_client.c
-       src/utils.c
-       src/socket_inaddr_any_server.c
-       src/socket_local_client.c
-       src/socket_local_server.c
-       src/socket_loopback_client.c
-       src/socket_loopback_server.c
-       src/socket_network_client.c
-       src/properties.c
-       src/sdktools.c
-       src/strutils.c
-       src/init.c
-       src/fileutils.c
-       src/commandline_sdbd.c
-       src/usb_linux_client.c
-       src/usb_funcfs_client.c
-       src/transport_security.c
+        src/sdb.c
+        src/fdevent.c
+        src/transport.c
+        src/transport_local.c
+        src/transport_usb.c
+        src/sockets.c
+        src/services.c
+        src/file_sync_service.c
+        src/usb_linux_client.c
+        src/utils.c
+        src/socket_inaddr_any_server.c
+        src/socket_local_client.c
+        src/socket_local_server.c
+        src/socket_loopback_client.c
+        src/socket_loopback_server.c
+        src/socket_network_client.c
+        src/sdktools.c
+        src/strutils.c
+        src/commandline_sdbd.c
+        src/usb_linux_client.c
+        src/usb_funcfs_client.c
+        src/default_plugin_auth.c
+        src/default_plugin_basic.c
+        src/default_plugin_main.c
+        src/default_plugin_event.c
+        src/default_plugin_appcmd.c
+        src/default_plugin_shellcmd.c
+        src/hashtable.c
+        src/plugin.c
+        src/plugin_encrypt.c
+        src/descs_strings.c
+        src/sdbd.c
+)
+
+SET(SDBD_SERVICE_SRCS
+        src/sdb.c
+        src/fdevent.c
+        src/transport.c
+        src/transport_local.c
+        src/transport_usb.c
+        src/sockets.c
+        src/file_sync_service.c
+        src/usb_linux_client.c
+        src/utils.c
+        src/socket_inaddr_any_server.c
+        src/socket_local_client.c
+        src/socket_local_server.c
+        src/socket_loopback_client.c
+        src/socket_loopback_server.c
+        src/socket_network_client.c
+        src/sdktools.c
+        src/strutils.c
+        src/commandline_sdbd.c
+        src/usb_linux_client.c
+        src/usb_funcfs_client.c
+        src/default_plugin_auth.c
+        src/default_plugin_basic.c
+        src/default_plugin_main.c
+        src/default_plugin_event.c
+        src/default_plugin_appcmd.c
+        src/default_plugin_shellcmd.c
+        src/hashtable.c
+        src/plugin.c
+        src/plugin_encrypt.c
+        src/descs_strings.c
+        src/services.c
+        src/sdbd_service.c
+)
+
+SET(SDBD_SUBS
+        src/subprocess.c
 )
 
 include(FindPkgConfig)
 
 pkg_check_modules(pkgs REQUIRED
-    libtzplatform-config
-    capi-system-info
-    vconf
-    glib-2.0
-    dbus-1
-    dbus-glib-1
-       dlog
- )
+        libtzplatform-config
+        capi-system-info
+        capi-system-device
+        vconf
+        glib-2.0
+        gio-2.0
+        dlog
+)
+
 FOREACH(flag ${pkgs_CFLAGS})
         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
@@ -84,54 +130,87 @@ ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
 ADD_DEFINITIONS("-DSUPPORT_ENCRYPT")
 
 IF (_ARM_TARGET)
-    ADD_DEFINITIONS("-DANDROID_GADGET=1")
+        ADD_DEFINITIONS("-DANDROID_GADGET=1")
 ENDIF (_ARM_TARGET)
 
-IF(TARGET_ARCH STREQUAL x86)
-    ADD_DEFINITIONS("-DTARGET_ARCH_X86")
-ELSE()
-    ADD_DEFINITIONS("-DTARGET_ARCH_ARM")
-ENDIF()
-
 IF(WEARABLE_PROFILE STREQUAL on)
-    ADD_DEFINITIONS("-D_WEARABLE")
+        ADD_DEFINITIONS("-D_WEARABLE")
 ENDIF()
 
+# Get systemd
+pkg_check_modules(SYSTEMD REQUIRED libsystemd)
+foreach(flag ${SYSTEMD_CFLAGS})
+       set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+endforeach(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
 find_package(Threads REQUIRED)
 
 ADD_EXECUTABLE(sdbd ${SDBD_SRCS})
-TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS})
+ADD_EXECUTABLE(sdbd-user ${SDBD_SUBS})
+ADD_EXECUTABLE(sdbd-service ${SDBD_SERVICE_SRCS})
+TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS})
+TARGET_LINK_LIBRARIES(sdbd-service -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS})
+TARGET_LINK_LIBRARIES(sdbd-user -pie ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS})
 
 set_property(
-       TARGET sdbd
-       PROPERTY COMPILE_DEFINITIONS
-       SDB_HOST=0
-       _DROP_PRIVILEGE
-       _FILE_OFFSET_BITS=64
+        TARGET sdbd
+        PROPERTY COMPILE_DEFINITIONS
+        SDB_HOST=0
+        _DROP_PRIVILEGE
+        _FILE_OFFSET_BITS=64
 )
 
 set_property(
-       TARGET sdbd
-       APPEND PROPERTY COMPILE_DEFINITIONS
-       _XOPEN_SOURCE
-       _GNU_SOURCE
-       HAVE_FORKEXEC
+        TARGET sdbd
+        APPEND PROPERTY COMPILE_DEFINITIONS
+        _XOPEN_SOURCE
+        _GNU_SOURCE
+        HAVE_FORKEXEC
 )
 
+set_property(
+        TARGET sdbd-service
+        PROPERTY COMPILE_DEFINITIONS
+        SDB_HOST=0
+        _DROP_PRIVILEGE
+        _FILE_OFFSET_BITS=64
+)
+
+set_property(
+        TARGET sdbd-service
+        APPEND PROPERTY COMPILE_DEFINITIONS
+        _XOPEN_SOURCE
+        _GNU_SOURCE
+        HAVE_FORKEXEC
+)
+
+
 if(USE_FUNCTION_FS)
-       set_property(
-               TARGET sdbd
-               APPEND PROPERTY COMPILE_DEFINITIONS
-               USB_FUNCFS
-       )
+        set_property(
+                TARGET sdbd
+                APPEND PROPERTY COMPILE_DEFINITIONS
+                USB_FUNCFS
+        )
 endif()
 
-install(TARGETS sdbd DESTINATION /usr/sbin)
+CONFIGURE_FILE(packaging/sdbd.pc.in packaging/sdbd.pc @ONLY)
+install(TARGETS sdbd sdbd-user sdbd-service DESTINATION /usr/sbin)
 install(FILES script/sdbd DESTINATION /etc/init.d)
 
+# Extract descriptors and strings for systemd socket activation
+add_executable(extract_descs_strings src/extract_descs_strings.c src/descs_strings.c)
+add_custom_command(OUTPUT descs strs
+               COMMAND ./extract_descs_strings
+               DEPENDS extract_descs_strings)
+add_custom_target(descs_strings ALL DEPENDS descs strs)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/descs DESTINATION /etc/sdbd)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/strs DESTINATION /etc/sdbd)
 
 # Optionally build unit tests binary -- could be helpful during further development
 if(BUILD_UNIT_TESTS)
-       enable_testing()
-       add_subdirectory(test)
+        enable_testing()
+        add_subdirectory(test)
 endif()