-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-manager C CXX)
-SET(PACKAGE ${PROJECT_NAME})
-SET(INTERFACES "${CMAKE_SOURCE_DIR}/dbus-interface")
-SET(PREFIX ${CMAKE_INSTALL_PREFIX})
-SET(LIBDIR ${PREFIX}/${LIB_PATH})
+CMAKE_MINIMUM_REQUIRED(VERSION 3.9)
+PROJECT(stc-manager)
-SET(DATA_DIR ${CMAKE_SOURCE_DIR}/res)
+INCLUDE(FindPkgConfig)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbus-interface)
+
+INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/manager/helper")
+
+SET(EXTRA_FLAGS "-Wall -Werror -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_FLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_FLAGS} -std=c++11")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
+
+SET(DBUS_IFACE "${CMAKE_SOURCE_DIR}/dbus-interface")
+SET(DATA_DIR ${CMAKE_SOURCE_DIR}/res)
+SET(DB_OBJ "STC_DB")
+
+ADD_DEFINITIONS("-DUSE_DLOG")
+IF(BUILD_GCOV)
+ ADD_DEFINITIONS("-DTIZEN_TEST_GCOV")
+ENDIF(BUILD_GCOV)
ADD_SUBDIRECTORY(dbus-interface)
ADD_SUBDIRECTORY(manager)
ADD_SUBDIRECTORY(plugin)
ADD_SUBDIRECTORY(misc)
-
+ADD_SUBDIRECTORY(res)
IF(BUILD_GTESTS)
ADD_SUBDIRECTORY(tests)
ENDIF(BUILD_GTESTS)
+Copyright (c) 2016-2020 Samsung Electronics Co., Ltd. All rights reserved.
Apache License
Version 2.0, January 2004
+FILE(GLOB DBUS_FILES *.xml)
+
+FIND_PROGRAM(GDBUS_CODEGEN NAMES gdbus-codegen)
+
ADD_CUSTOM_COMMAND(
- WORKING_DIRECTORY
- OUTPUT dbus
- COMMAND gdbus-codegen --interface-prefix net.stc.
- --generate-c-code generated-code
+ OUTPUT stc-generated-dbus.c
+ COMMAND ${GDBUS_CODEGEN} --interface-prefix net.stc.
+ --generate-c-code stc-generated-dbus
--c-namespace Stc
--c-generate-object-manager
--generate-docbook generated-code-docs
- ${INTERFACES}/stcmanager-iface-manager.xml
- ${INTERFACES}/stcmanager-iface-restriction.xml
- ${INTERFACES}/stcmanager-iface-statistics.xml
- ${INTERFACES}/stcmanager-iface-firewall.xml
- ${INTERFACES}/stcmanager-iface-pcap.xml
- COMMENT "Generating GDBus .c/.h")
+ ${DBUS_FILES}
+ DEPENDS ${DBUS_FILES}
+ COMMENT "Generating GDBus .c/.h"
+)
-ADD_CUSTOM_TARGET(GENERATED_DBUS_CODE DEPENDS dbus)
+ADD_CUSTOM_TARGET(GENERATED_DBUS_CODE DEPENDS stc-generated-dbus.c)
#include <glib.h>
#include "stc.h"
#include "stc-gdbus.h"
-#include "table-firewall.h"
+#include "db/table-firewall.h"
/*****************************************************************************
* Macros and Typedefs
#define __STC_MANAGER_GDBUS_H__
#include "stc.h"
-#include "generated-code.h"
+#include "stc-generated-dbus.h"
#define STC_DBUS_SERVICE "net.stc"
#define STC_DBUS_INTERFACE_RESTRICTION STC_DBUS_SERVICE ".restriction"
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(REQUIRES_LIST glib-2.0 gio-2.0 gio-unix-2.0 dlog vconf capi-system-info openssl1.1
+ sqlite3)
-SET(REQUIRES_LIST ${REQUIRES_LIST}
- glib-2.0
- gio-2.0
- gio-unix-2.0
- dlog
- vconf
- capi-system-info
- openssl1.1
- )
-
-IF("${ENABLE_DATABASE}" STREQUAL "YES")
- SET(REQUIRES_LIST ${REQUIRES_LIST} sqlite3)
-ENDIF()
-
-INCLUDE(FindPkgConfig)
PKG_CHECK_MODULES(stc_pkgs REQUIRED "${REQUIRES_LIST}")
+INCLUDE_DIRECTORIES(${stc_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${stc_pkgs_LIBRARY_DIRS})
-FOREACH(flag ${stc_pkgs_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(SOURCE_DIR ${CMAKE_SOURCE_DIR}/manager)
-SET(HELPER_SOURCE_DIR ${SOURCE_DIR}/helper)
-SET(DATABASE_SOURCE_DIR ${SOURCE_DIR}/database)
-SET(LIMITATION_SOURCE_DIR ${SOURCE_DIR}/limitation)
-SET(PLUGIN_DIR ${CMAKE_SOURCE_DIR}/plugin)
-SET(APPSTATUS_SOURCE_DIR ${PLUGIN_DIR}/appstatus)
-SET(EXCEPTION_SOURCE_DIR ${PLUGIN_DIR}/exception)
-SET(PROCFS_SOURCE_DIR ${PLUGIN_DIR}/procfs)
-SET(PCAP_SOURCE_DIR ${PLUGIN_DIR}/pcap)
-SET(TETHER_SOURCE_DIR ${PLUGIN_DIR}/tether)
-SET(MONITOR_SOURCE_DIR ${PLUGIN_DIR}/monitor)
-SET(FIREWALL_SOURCE_DIR ${PLUGIN_DIR}/firewall)
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbus-interface)
-
-INCLUDE_DIRECTORIES(${SOURCE_DIR})
-INCLUDE_DIRECTORIES(${HELPER_SOURCE_DIR})
-
-INCLUDE_DIRECTORIES(${DATABASE_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/db)
-
-INCLUDE_DIRECTORIES(${APPSTATUS_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${EXCEPTION_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${PROCFS_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${PCAP_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${TETHER_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${MONITOR_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${FIREWALL_SOURCE_DIR})
-
-FILE(GLOB SOURCE_SRCS ${SOURCE_DIR}/*.c util/*.c)
-FILE(GLOB HELPER_SRCS ${HELPER_SOURCE_DIR}/*.c)
+FILE(GLOB SRCS *.c helper/*.c util/*.c)
-SET(SRCS ${SRCS} ${SOURCE_SRCS} ${HELPER_SRCS})
+SET(SRCS ${SRCS} ${DBUS_IFACE}/stc-generated-dbus.c)
+SET_SOURCE_FILES_PROPERTIES(${DBUS_IFACE}/stc-generated-dbus.c PROPERTIES GENERATED TRUE)
-IF("${ENABLE_DATABASE}" STREQUAL "YES")
- FILE(GLOB DATABASE_SRCS ${DATABASE_SOURCE_DIR}/*.c)
-
- SET(SRCS ${SRCS} ${DATABASE_SRCS})
-
- INSTALL(FILES ${DATA_DIR}/traffic_db.sql DESTINATION /usr/share)
- INSTALL(FILES ${DATA_DIR}/firewall_db.sql DESTINATION /usr/share)
-ENDIF()
-
-IF(BUILD_GTESTS)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fpic -Wall -Werror-implicit-function-declaration")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fprofile-arcs -ftest-coverage")
-ELSE(BUILD_GTESTS)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fpic -Wall -Werror-implicit-function-declaration -fvisibility=hidden")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-ENDIF(BUILD_GTESTS)
-
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
-
-ADD_DEFINITIONS("-DUSE_DLOG")
-ADD_DEFINITIONS("-DDATABASE_FULL_PATH=\"${DATABASE_FULL_PATH}\"")
-ADD_DEFINITIONS("-DDATABASE_BACKUP_PATH=\"${DATABASE_BACKUP_PATH}\"")
-IF(BUILD_GTESTS)
- ADD_DEFINITIONS(-DTIZEN_GTESTS)
-ENDIF(BUILD_GTESTS)
-
-SET(SRCS ${SRCS} ${INTERFACES}/generated-code.c)
-SET_SOURCE_FILES_PROPERTIES(${INTERFACES}/generated-code.c PROPERTIES GENERATED TRUE)
-
-ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${stc_pkgs_LDFLAGS} -ldl)
-INSTALL(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${BIN_DIR})
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS} $<TARGET_OBJECTS:${DB_OBJ}>)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${stc_pkgs_LIBRARIES} dl)
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
+ POSITION_INDEPENDENT_CODE ON
+ ENABLE_EXPORTS 1)
+TARGET_COMPILE_OPTIONS(${PROJECT_NAME} PUBLIC ${stc_pkgs_CFLAGS_OTHER})
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BIN_INSTALL_DIR})
ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
+
+ADD_SUBDIRECTORY(database)
--- /dev/null
+FILE(GLOB DB_SRCS *.c)
+
+ADD_DEFINITIONS("-DDATABASE_FULL_PATH=\"${DATABASE_FULL_PATH}\"")
+ADD_DEFINITIONS("-DDATABASE_BACKUP_PATH=\"${DATABASE_BACKUP_PATH}\"")
+
+ADD_LIBRARY(${DB_OBJ} OBJECT ${DB_SRCS})
+SET_TARGET_PROPERTIES(${DB_OBJ} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+ADD_DEPENDENCIES(${DB_OBJ} GENERATED_DBUS_CODE)
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+#define _GNU_SOURCE
#include "helper-cgroup.h"
#define RELEASE_AGENT "release_agent"
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+#define _GNU_SOURCE
#include "helper-file.h"
#define BUF_MAX (BUFSIZ)
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+#define _GNU_SOURCE
#include <signal.h>
#include <errno.h>
#include <sys/wait.h>
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-
SET(NET_CLS_RELEASE "net-cls-release")
-ADD_EXECUTABLE(${NET_CLS_RELEASE} ${CMAKE_CURRENT_SOURCE_DIR}/${NET_CLS_RELEASE}.c)
-INSTALL(TARGETS ${NET_CLS_RELEASE} RUNTIME DESTINATION ${BIN_DIR})
+
+ADD_EXECUTABLE(${NET_CLS_RELEASE} ${NET_CLS_RELEASE}.c)
+SET_TARGET_PROPERTIES(${NET_CLS_RELEASE} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+INSTALL(TARGETS ${NET_CLS_RELEASE} DESTINATION ${BIN_INSTALL_DIR})
Name: stc-manager
Summary: STC(Smart Traffic Control) manager
-Version: 0.1.4
+Version: 0.1.5
Release: 0
Group: Network & Connectivity/Other
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
Source1001: %{name}.manifest
-%define enable_database YES
-%define enable_statistics YES
-%define enable_restriction YES
-%define database_full_path %{TZ_SYS_GLOBALUSER_DB}/.stc-manager-datausage.db
-%define database_backup_path %{TZ_SYS_RO_SHARE}/stc/.stc-manager-datausage.db
-%define upgrade_script_filename 500.stc-manager_upgrade.sh
-%define upgrade_script_path %{TZ_SYS_RO_SHARE}/upgrade/scripts
-
BuildRequires: cmake
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(openssl1.1)
-
-%if %{?enable_database} == YES
-BuildRequires: pkgconfig(sqlite3)
-%endif
-
BuildRequires: python
BuildRequires: python-xml
-
+BuildRequires: pkgconfig(sqlite3)
%if 0%{?gtests:1}
BuildRequires: pkgconfig(gmock)
%endif
%description plugin-firewall
A smart traffic control manager extension for firewall plugin
+%if 0%{?gcov:1}
+%package gcov
+Summary: Coverage Data of %{name}
+Group: System/Testing
+
+%description gcov
+The %{name}-gcov pacakge contains gcov objects
+%endif
+
+%global stc_db_file %{TZ_SYS_GLOBALUSER_DB}/.%{name}-datausage.db
+%global stc_backup_db_file %{TZ_SYS_RO_SHARE}/stc/.%{name}-datausage.db
+
%prep
%setup -q
cp %{SOURCE1001} ./%{name}.manifest
%build
-
-export CFLAGS="$CFLAGS -D_GNU_SOURCE"
-export CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE"
-
%if "%{tizen_profile_name}" == "tv"
CFLAGS+=" -DTIZEN_TV_EXT"
%endif
+%if 0%{?gcov:1}
+export CFLAGS+=" -fprofile-arcs -ftest-coverage"
+export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
+export LDFLAGS+=" -lgcov -Wl,--dynamic-list-data"
+%endif
+
%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} \
- -DBIN_DIR=%{_bindir} \
- -DLIB_PATH=%{_lib} \
- -DENABLE_DATABASE=%{enable_database} \
- -DDATABASE_FULL_PATH=%{database_full_path} \
- -DDATABASE_BACKUP_PATH=%{database_backup_path} \
- -DENABLE_STATISTICS=%{enable_statistics} \
- -DENABLE_RESTRICTION=%{enable_restriction} \
+ -DCMAKE_VERBOSE_MAKEFILE=OFF \
+ -DBIN_INSTALL_DIR:PATH=%{_bindir} \
+ -DSYSTEMD_DIR:PATH=%{_unitdir} \
+ -DSYSCONF_DIR:PATH=%{_sysconfdir} \
+ -DSTC_RW_DIR:PATH=%{_localstatedir}/lib/stc \
+ -DDATABASE_FULL_PATH=%{stc_db_file} \
+ -DDATABASE_BACKUP_PATH=%{stc_backup_db_file} \
-DBUILD_GTESTS=%{?gtests:1}%{!?gtests:0} \
-DBUILD_GCOV=%{?gcov:1}%{!?gcov:0}
-
make %{?_smp_mflags}
%install
-rm -rf %{buildroot}
-
%make_install
-#database initialization
-%if %{?enable_database} == YES
- mkdir -p %{buildroot}%{TZ_SYS_GLOBALUSER_DB}
- sqlite3 %{buildroot}%{database_full_path} < %{buildroot}/usr/share/traffic_db.sql
- sqlite3 %{buildroot}%{database_full_path} < %{buildroot}/usr/share/firewall_db.sql
- mkdir -p %{buildroot}%{TZ_SYS_RO_SHARE}/stc
- cp %{buildroot}%{database_full_path} %{buildroot}%{database_backup_path}
- rm %{buildroot}/usr/share/traffic_db.sql
- rm %{buildroot}/usr/share/firewall_db.sql
+%if 0%{?gcov:1}
+find .. -name '*.gcno' | tar cf %{name}-gcov.tar -T -
+install -d -m 0755 %{buildroot}%{_datadir}/gcov/obj
+tar xf %{name}-gcov.tar -C %{buildroot}%{_datadir}/gcov/obj
%endif
-#Exceptions file
-mkdir -p %{buildroot}/%{_localstatedir}/lib/stc
-cp res/exceptions %{buildroot}/%{_localstatedir}/lib/stc/exceptions
-
-#Systemd service file
-mkdir -p %{buildroot}%{_unitdir}
-cp res/systemd/stc-manager.service %{buildroot}%{_unitdir}/stc-manager.service
-
-mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants/
-ln -s ../stc-manager.service %{buildroot}%{_unitdir}/multi-user.target.wants/stc-manager.service
+#database initialization
+mkdir -p %{buildroot}%{TZ_SYS_GLOBALUSER_DB}
+sqlite3 %{buildroot}%{stc_db_file} < res/traffic_db.sql
+sqlite3 %{buildroot}%{stc_db_file} < res/firewall_db.sql
+install -D -m 0660 %{buildroot}%{stc_db_file} %{buildroot}%{stc_backup_db_file}
-#DBus DAC (stc-manager.manifest enables DBus SMACK)
-mkdir -p %{buildroot}%{_sysconfdir}/dbus-1/system.d
-cp res/dbus/stc-manager.conf %{buildroot}%{_sysconfdir}/dbus-1/system.d/stc-manager.conf
+mkdir -p %{buildroot}%{TZ_SYS_UPGRADE_SCRIPTS}
+install -m 0755 res/500.%{name}_upgrade.sh %{buildroot}%{TZ_SYS_UPGRADE_SCRIPTS}
-mkdir -p %{buildroot}%{_datadir}/dbus-1/system-services/
-cp res/dbus/net.stc.service %{buildroot}%{_datadir}/dbus-1/system-services/net.stc.service
+%install_service multi-user.target.wants %{name}.service
-#OS Upgrade
-mkdir -p %{buildroot}%{upgrade_script_path}
-cp -f res/%{upgrade_script_filename} %{buildroot}%{upgrade_script_path}
%files
%manifest %{name}.manifest
-%license LICENSE.APLv2
-%defattr(-,root,root,-)
-%attr(500,root,root) %{_bindir}/*
-
-%attr(644,root,root) %{_unitdir}/stc-manager.service
-%attr(644,root,root) %{_unitdir}/multi-user.target.wants/stc-manager.service
-
-%attr(755,network_fw,network_fw) /%{_localstatedir}/lib/stc
-%attr(600,root,root) /%{_localstatedir}/lib/stc/exceptions
-
-#DBus DAC
-%attr(644,root,root) %{_sysconfdir}/dbus-1/system.d/*
-%attr(644,root,root) %{_datadir}/dbus-1/system-services/*
-
-%if %{?enable_database} == YES
-%config(noreplace) %attr(660, root, root) %{database_full_path}
-%config(noreplace) %attr(660, root, root) %{database_full_path}-journal
-%config(noreplace) %attr(660, root, root) %{database_backup_path}
-%endif
-
+%{_bindir}/*
+%{_unitdir}/%{name}.service
+%{_unitdir}/multi-user.target.wants/%{name}.service
+%{_localstatedir}/lib/stc/exceptions
+%{_sysconfdir}/dbus-1/system.d/*
+%{_datadir}/dbus-1/system-services/*
+%dir %attr(0755,network_fw,network_fw) %{_localstatedir}/lib/stc
+%config(noreplace) %{stc_db_file}*
+%config(noreplace) %{stc_backup_db_file}
+%{TZ_SYS_UPGRADE_SCRIPTS}/500.%{name}_upgrade.sh
%if 0%{?gtests:1}
%{_bindir}/gtest*
%endif
-
-%{upgrade_script_path}/%{upgrade_script_filename}
+%license LICENSE.APLv2
%files plugin-appstatus
%manifest %{name}.manifest
-%attr(644, -,-) %{_datadir}/icons/*.png
-%attr(500,root,root) %{_libdir}/stc-plugin-appstatus.so
+%{_datadir}/icons/*.png
+%{_libdir}/stc-plugin-appstatus.so
+%license LICENSE.APLv2
%files plugin-exception
%manifest %{name}.manifest
-%attr(500,root,root) %{_libdir}/stc-plugin-exception.so
+%{_libdir}/stc-plugin-exception.so
+%license LICENSE.APLv2
%files plugin-procfs
%manifest %{name}.manifest
-%attr(500,root,root) %{_libdir}/stc-plugin-procfs.so
+%{_libdir}/stc-plugin-procfs.so
+%license LICENSE.APLv2
%files plugin-pcap
%manifest %{name}.manifest
-%attr(500,root,root) %{_libdir}/stc-plugin-pcap.so
+%{_libdir}/stc-plugin-pcap.so
+%license LICENSE.APLv2
%files plugin-tether
%manifest %{name}.manifest
-%attr(500,root,root) %{_libdir}/stc-plugin-tether.so
+%{_libdir}/stc-plugin-tether.so
+%license LICENSE.APLv2
%files plugin-monitor
%manifest %{name}.manifest
-%attr(500,root,root) %{_libdir}/stc-plugin-monitor.so
+%{_libdir}/stc-plugin-monitor.so
+%license LICENSE.APLv2
%files plugin-firewall
%manifest %{name}.manifest
-%attr(500,root,root) %{_libdir}/stc-plugin-firewall.so
+%{_libdir}/stc-plugin-firewall.so
+%license LICENSE.APLv2
+
+%if 0%{?gcov:1}
+%files gcov
+%{_datadir}/gcov/*
+%endif
-SET(SOURCE_DIR ${CMAKE_SOURCE_DIR}/manager)
-SET(HELPER_SOURCE_DIR ${SOURCE_DIR}/helper)
-SET(DATABASE_SOURCE_DIR ${SOURCE_DIR}/database)
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbus-interface)
-
-INCLUDE_DIRECTORIES(${SOURCE_DIR})
-INCLUDE_DIRECTORIES(${HELPER_SOURCE_DIR})
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/db)
+PKG_CHECK_MODULES(plugin_pkgs REQUIRED dlog gio-2.0 gio-unix-2.0 glib-2.0)
+INCLUDE_DIRECTORIES(${plugin_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${plugin_pkgs_LIBRARY_DIRS})
ADD_SUBDIRECTORY(appstatus)
ADD_SUBDIRECTORY(exception)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-appstatus C)
+SET(STC_PI_APPSTATUS "stc-plugin-appstatus")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(appstatus_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- bundle
- syspopup-caller
- )
+PKG_CHECK_MODULES(appstatus_pkgs REQUIRED bundle syspopup-caller)
+INCLUDE_DIRECTORIES(${appstatus_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${appstatus_pkgs_LIBRARY_DIRS})
-FOREACH(flag ${appstatus_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+FILE(GLOB APPSTATUS_SRCS *.c)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
+ADD_LIBRARY(${STC_PI_APPSTATUS} SHARED ${APPSTATUS_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_APPSTATUS} ${plugin_pkgs_LIBRARIES} ${appstatus_pkgs_LIBRARIES})
+TARGET_COMPILE_OPTIONS(${STC_PI_APPSTATUS} PUBLIC ${plugin_pkgs_CFLAGS_OTHER} ${appstatus_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_APPSTATUS} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_APPSTATUS})
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-appstatus.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${appstatus_plugin_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/stc_noti_datausage.png DESTINATION /usr/share/icons)
+INSTALL(TARGETS ${STC_PI_APPSTATUS} DESTINATION ${LIB_INSTALL_DIR})
+INSTALL(FILES data/stc_noti_datausage.png DESTINATION ${SHARE_INSTALL_PREFIX}/icons)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-exception C)
+SET(STC_PI_EXCEPTION "stc-plugin-exception")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(exception_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- pkgmgr-info
- )
+PKG_CHECK_MODULES(exception_pkgs REQUIRED pkgmgr-info)
+INCLUDE_DIRECTORIES(${exception_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${exception_pkgs_LIBRARY_DIRS})
-FOREACH(flag ${exception_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+FILE(GLOB EXCEPTION_SRCS *.c)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
+ADD_LIBRARY(${STC_PI_EXCEPTION} SHARED ${EXCEPTION_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_EXCEPTION} ${plugin_pkgs_LIBRARIES} ${exception_pkgs_LIBRARIES})
+TARGET_COMPILE_OPTIONS(${STC_PI_EXCEPTION} PUBLIC ${plugin_pkgs_CFLAGS_OTHER} ${exception_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_EXCEPTION} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_EXCEPTION})
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-exception.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${exception_plugin_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
+INSTALL(TARGETS ${STC_PI_EXCEPTION} DESTINATION ${LIB_INSTALL_DIR})
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-firewall C)
+SET(STC_PI_FIREWALL "stc-plugin-firewall")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(firewall_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- )
+FILE(GLOB FIREWALL_SRCS *.c)
+ADD_LIBRARY(${STC_PI_FIREWALL} SHARED ${FIREWALL_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_FIREWALL} ${plugin_pkgs_LIBRARIES})
+TARGET_COMPILE_OPTIONS(${STC_PI_FIREWALL} PUBLIC ${plugin_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_FIREWALL} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_FIREWALL})
+ADD_DEPENDENCIES(${STC_PI_FIREWALL} GENERATED_DBUS_CODE)
-FOREACH(flag ${firewall_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-firewall.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${firewall_plugin_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
+INSTALL(TARGETS ${STC_PI_FIREWALL} DESTINATION ${LIB_INSTALL_DIR})
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-monitor C)
+SET(STC_PI_MONITOR "stc-plugin-monitor")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(monitor_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- vconf
- openssl1.1
- bundle
- syspopup-caller
- )
+PKG_CHECK_MODULES(monitor_pkgs REQUIRED vconf openssl1.1 bundle syspopup-caller)
+INCLUDE_DIRECTORIES(${monitor_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${monitor_pkgs_LIBRARY_DIRS})
-FOREACH(flag ${monitor_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+FILE(GLOB MONITOR_SRCS *.c)
+ADD_LIBRARY(${STC_PI_MONITOR} SHARED ${MONITOR_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_MONITOR} ${plugin_pkgs_LIBRARIES} ${monitor_pkgs_LIBRARIES})
+TARGET_COMPILE_OPTIONS(${STC_PI_MONITOR} PUBLIC ${plugin_pkgs_CFLAGS_OTHER} ${monitor_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_MONITOR} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_MONITOR})
+ADD_DEPENDENCIES(${STC_PI_MONITOR} GENERATED_DBUS_CODE)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/tether)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/exception)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/appstatus)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/firewall)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-monitor.c
- stcplugin-monitor-proc.c
- stcplugin-monitor-connection.c
- stcplugin-monitor-rstn.c
- stcplugin-monitor-app.c
- stcplugin-monitor-ipt.c
- stcplugin-monitor-time.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${monitor_plugin_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
+INSTALL(TARGETS ${STC_PI_MONITOR} DESTINATION ${LIB_INSTALL_DIR})
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-pcap C)
+SET(STC_PI_PCAP "stc-plugin-pcap")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(pcap_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- )
+FILE(GLOB PCAP_SRCS *.c)
-FOREACH(flag ${pcap_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+ADD_LIBRARY(${STC_PI_PCAP} SHARED ${PCAP_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_PCAP} ${plugin_pkgs_LIBRARIES} pcap)
+TARGET_COMPILE_OPTIONS(${STC_PI_PCAP} PUBLIC ${plugin_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_PCAP} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_PCAP})
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-pcap.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pcap_plugin_LDFLAGS} -lpcap)
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
+INSTALL(TARGETS ${STC_PI_PCAP} DESTINATION ${LIB_INSTALL_DIR})
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-procfs C)
+SET(STC_PI_PROCFS "stc-plugin-procfs")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(procfs_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- )
+FILE(GLOB PROCFS_SRCS *.c)
-FOREACH(flag ${procfs_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+ADD_LIBRARY(${STC_PI_PROCFS} SHARED ${PROCFS_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_PROCFS} ${plugin_pkgs_LIBRARIES})
+TARGET_COMPILE_OPTIONS(${STC_PI_PROCFS} PUBLIC ${plugin_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_PROCFS} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_PROCFS})
+ADD_DEPENDENCIES(${STC_PI_PROCFS} GENERATED_DBUS_CODE)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/monitor)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/exception)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-procfs.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${procfs_plugin_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
+INSTALL(TARGETS ${STC_PI_PROCFS} DESTINATION ${LIB_INSTALL_DIR})
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(stc-plugin-tether C)
+SET(STC_PI_TETHER "stc-plugin-tether")
-# Set required packages
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(tether_plugin REQUIRED
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
- )
+FILE(GLOB TETHER_SRCS *.c)
-FOREACH(flag ${tether_plugin_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+ADD_LIBRARY(${STC_PI_TETHER} SHARED ${TETHER_SRCS})
+TARGET_LINK_LIBRARIES(${STC_PI_TETHER} ${plugin_pkgs_LIBRARIES})
+TARGET_COMPILE_OPTIONS(${STC_PI_TETHER} PUBLIC ${plugin_pkgs_CFLAGS_OTHER})
+SET_TARGET_PROPERTIES(${STC_PI_TETHER} PROPERTIES PREFIX "" OUTPUT_NAME ${STC_PI_TETHER})
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/plugin/monitor)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Werror -fvisibility=hidden")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(SRCS_PLUGIN
- stcplugin-tether.c
- )
-
-# library build
-ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS_PLUGIN})
-ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${tether_plugin_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "" OUTPUT_NAME ${PROJECT_NAME})
-
-# install
-INSTALL(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${LIBDIR})
+INSTALL(TARGETS ${STC_PI_TETHER} DESTINATION ${LIB_INSTALL_DIR})
--- /dev/null
+INSTALL(FILES systemd/${PROJECT_NAME}.service DESTINATION ${SYSTEMD_DIR})
+
+INSTALL(FILES dbus/${PROJECT_NAME}.conf DESTINATION ${SYSCONF_DIR}/dbus-1/system.d)
+INSTALL(FILES dbus/net.stc.service DESTINATION ${SHARE_INSTALL_PREFIX}/dbus-1/system-services)
+
+INSTALL(FILES exceptions DESTINATION ${STC_RW_DIR})
+
+#INSTALL(FILES ${DATA_DIR}/traffic_db.sql DESTINATION /usr/share)
+#INSTALL(FILES ${DATA_DIR}/firewall_db.sql DESTINATION /usr/share)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(gtest-stc-manager C CXX)
-
SET(GTEST_TEST "gtest-stc-manager")
-ADD_DEFINITIONS("-DUSE_DLOG")
-
-SET(REQUIRES_LIST ${REQUIRES_LIST}
- glib-2.0
- gio-2.0
- gmock
- dlog
-)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(GTEST_TEST_PKG REQUIRED ${REQUIRES_LIST})
-
-FOREACH(flag ${GTEST_TEST_PKG_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wall -fPIE")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}")
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+SET(REQUIRES_LIST ${REQUIRES_LIST} glib-2.0 gio-2.0 gmock dlog)
+PKG_CHECK_MODULES(test_pkgs REQUIRED ${REQUIRES_LIST})
+INCLUDE_DIRECTORIES(${test_pkgs_INCLUDE_DIRS})
+LINK_DIRECTORIES(${test_pkgs_LIBRARY_DIRS})
-FILE(GLOB GTEST_TEST_SRCS *.cpp)
-SET(GTEST_TEST_SRCS ${GTEST_TEST_SRCS})
+FILE(GLOB TEST_SRCS *.cpp)
-ADD_EXECUTABLE(${GTEST_TEST} ${GTEST_TEST_SRCS})
-TARGET_LINK_LIBRARIES(${GTEST_TEST} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKG_LDFLAGS} -ldl -lgcov)
+ADD_EXECUTABLE(${GTEST_TEST} ${TEST_SRCS})
+SET_TARGET_PROPERTIES(${GTEST_TEST} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+TARGET_COMPILE_OPTIONS(${GTEST_TEST} PUBLIC ${test_pkgs_CFLAGS_OTHER})
+TARGET_LINK_LIBRARIES(${GTEST_TEST} ${test_pkgs_LIBRARIES} dl)
-INSTALL(TARGETS ${GTEST_TEST} RUNTIME DESTINATION ${BIN_DIR})
+INSTALL(TARGETS ${GTEST_TEST} DESTINATION ${BIN_INSTALL_DIR})