-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
+PROJECT(privilege-info VERSION 0.0.7 LANGUAGES C)
-SET(CMAKE_VERBOSE_MAKEFILE OFF)
+INCLUDE(GNUInstallDirs)
+INCLUDE(FindPkgConfig)
-IF("${USE_AUTOSTART}" STREQUAL "1")
- ADD_DEFINITIONS("-DUSE_AUTOSTART")
-ENDIF()
+IF(NOT CMAKE_BUILD_TYPE)
+ SET(CMAKE_BUILD_TYPE "RELEASE")
+ENDIF(NOT CMAKE_BUILD_TYPE)
-ADD_DEFINITIONS("-DCLIENT_IPC_THREAD")
-ADD_DEFINITIONS("-DUSE_IPC_EPOLL")
+SET(CMAKE_C_FLAGS_DEBUG "-std=c11 -O0 -ggdb -Wp,-U_FORTIFY_SOURCE")
+SET(CMAKE_C_FLAGS_RELEASE "-std=c11 -O2 -DNDEBUG")
-ADD_DEFINITIONS("-Werror -Wall -Wextra")
+ADD_DEFINITIONS("-Werror")
+ADD_DEFINITIONS("-Wall")
+ADD_DEFINITIONS("-Wextra")
-STRING(REGEX MATCH "([^.]*)" API_VERSION "${VERSION}")
-ADD_DEFINITIONS("-DAPI_VERSION=\"$(API_VERSION)\"")
+SET(CMAKE_POSITION_INDEPENDENT_CODE "True")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
-CONFIGURE_FILE(privilege-info.pc.in privilege-info.pc @ONLY)
+PKG_CHECK_MODULES(PRIVILEGE_INFO_DEPS REQUIRED
+ glib-2.0
+ dlog
+ security-privilege-manager
+ capi-base-common
+ capi-system-info)
+
+INCLUDE_DIRECTORIES(SYSTEM ${PRIVILEGE_INFO_DEPS_INCLUDE_DIRS})
+LINK_DIRECTORIES(${PRIVILEGE_INFO_DEPS_LIBRARY_DIRS})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/include)
-MESSAGE("build privilege-info")
ADD_SUBDIRECTORY(src)
-MESSAGE("build tc-privilege-info")
ADD_SUBDIRECTORY(test)
+%{!?build_type:%global build_type RELEASE}
+
Name: privilege-info
Summary: Privilege Information
Version: 0.0.7
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
+
BuildRequires: cmake
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(capi-base-common)
-BuildRequires: pkgconfig(security-privilege-manager)
-BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(capi-system-info)
-%if 0%{?gcov:1}
-BuildRequires: lcov
-%endif
-Requires: tizen-locale
+BuildRequires: pkgconfig(security-privilege-manager)
%description
Provides Privilege Information(Privilege Info) API
Requires: %{name} = %{version}-%{release}
%description -n privilege-info-devel
-The Privilege Info API provides functions to get privilege information (DEV)
+The Privilege Info API provides functions to get privilege information (Development)
-%package -n tc-privilege-info
+%package -n privilege-info-tests
Summary: Privilege Info TC
Group: Security/Testing
Requires: %{name} = %{version}-%{release}
-%description -n tc-privilege-info
+%description -n privilege-info-tests
Privilege Info API Internal Test
-%if 0%{?gcov:1}
-%package gcov
-Summary: Privilege Info(gcov)
-Group: Security/Testing
-%description gcov
-New Privilege Info gcov objects
-%endif
-
-
%prep
%setup -q
%build
-
-export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
-export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
-export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
-
-%if 0%{?gcov:1}
-export CFLAGS+=" -fprofile-arcs -ftest-coverage"
-export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
-export FFLAGS+=" -fprofile-arcs -ftest-coverage"
-export LDFLAGS+=" -lgcov"
-%endif
-
-echo cmake . -DPREFIX=%{_prefix} \
- -DLIBDIR=%{_libdir} \
- -DINCLUDEDIR=%{_includedir} \
- -DCMAKE_BUILD_TYPE=%{build_type} \
- -DVERSION=%{version} \
- -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
- -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
- -DBUILD_GCOV={?gcov:1}%{!?gcov:0}
-
-cmake . -DPREFIX=%{_prefix} \
- -DLIBDIR=%{_libdir} \
- -DINCLUDEDIR=%{_includedir} \
- -DCMAKE_BUILD_TYPE=%{build_type} \
- -DVERSION=%{version} \
- -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES \
- -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP \
- -DBUILD_GCOV={?gcov:1}%{!?gcov:0}
+%cmake . -DCMAKE_BUILD_TYPE=%{build_type}
make %{?jobs:-j%jobs}
-%if 0%{?gcov:1}
-mkdir -p gcov-obj
-find . \( -name '*.gcno' ! -name 'tc_*' \) -exec cp '{}' gcov-obj ';'
-%endif
-
%install
rm -rf %{buildroot}
-
%make_install
-%if 0%{?gcov:1}
-mkdir -p %{buildroot}%{_datadir}/gcov/obj
-install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
-%endif
+%clean
+rm -rf %{buildroot}
%post -n privilege-info -p /sbin/ldconfig
%postun -n privilege-info -p /sbin/ldconfig
%files -n privilege-info
-%{_libdir}/libprivilege-info.so*
%license LICENSE.Apache-2.0
%manifest packaging/privilege-info.manifest
+%{_libdir}/libprivilege-info.so.*
%files -n privilege-info-devel
+%manifest packaging/privilege-info.manifest
+%{_libdir}/libprivilege-info.so
%{_includedir}/privilege_information.h
%{_libdir}/pkgconfig/privilege-info.pc
-%files -n tc-privilege-info
-%{_bindir}/tc-privilege-info
-
-%if 0%{?gcov:1}
-%files gcov
-%{_datadir}/gcov/obj/*
-%endif
-
-%clean
-rm -rf %{buildroot}
-
+%files -n privilege-info-tests
+%manifest packaging/privilege-info.manifest
+%{_bindir}/privilege-info-tests
-# Package Information for pkg-config
-
-prefix=@PREFIX@
-exec_prefix=/usr
-libdir=@LIBDIR@
-includedir=@INCLUDEDIR@
-
-Name: @PC_NAME@
-Description: @PACKAGE_DESCRIPTION@
-Version: @VERSION@
-Requires: @PC_REQUIRED@
-Libs: -L${libdir} @PC_LDFLAGS@
-Cflags: -I${includedir} @PC_CFLAGS@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=@CMAKE_INSTALL_PREFIX@
+libdir=@LIB_INSTALL_DIR@
+includedir=@INCLUDE_INSTALL_DIR@
+Name: privilege-info
+Description: Provides Privilege Information(Privilege Info) API
+Version: @PROJECT_VERSION@
+Requires: glib-2.0
+Libs: -L${libdir} -lprivilege-info
+Cflags: -I${includedir}
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-SET(PACKAGE_NAME privilege-info)
-PROJECT(${PACKAGE_NAME})
-
-SET(PRIV_INFO_SOURCES
- ${PROJECT_SOURCE_DIR}/privilege_information.c
-)
-
-INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
-
-SET(requires glib-2.0 dlog security-privilege-manager capi-system-info)
-INCLUDE(FindPkgConfig)
-pkg_check_modules(${PACKAGE_NAME} REQUIRED ${requires})
-FOREACH(flag ${${PACKAGE_NAME}_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-# Compiler flags
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIC -fvisibility=hidden -D_WITH_SYSTEMD_")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${PACKAGE_NAME_CFLAGS}")
-
-########################################################
-# For libprivilege-info libraries(.so)
-########################################################
-
-SET(TARGET_PRIV_INFO_LIB "privilege-info")
-SET(SO_VERSION 1)
-SET(VERSION "${SO_VERSION}.0.0")
-
-ADD_LIBRARY(${TARGET_PRIV_INFO_LIB} SHARED ${PRIV_INFO_SOURCES})
-
-SET_TARGET_PROPERTIES(${TARGET_PRIV_INFO_LIB} PROPERTIES
- SOVERSION ${SO_VERSION}
- VERSION ${VERSION}
-)
-
-TARGET_LINK_LIBRARIES(${TARGET_PRIV_INFO_LIB} ${${PACKAGE_NAME}_LDFLAGS})
-
-#######################################################
-
-INSTALL(TARGETS ${PACKAGE_NAME} DESTINATION ${LIBDIR})
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/include/privilege_information.h DESTINATION ${INCLUDEDIR})
-
-SET(PC_LDFLAGS -l${PACKAGE_NAME})
-CONFIGURE_FILE(../${PACKAGE_NAME}.pc.in ${PACKAGE_NAME}.pc @ONLY)
-INSTALL(FILES ${PACKAGE_NAME}.pc DESTINATION ${LIBDIR}/pkgconfig)
+SET(TARGET_LIB "privilege-info")
+ADD_LIBRARY(${TARGET_LIB} SHARED privilege_information.c)
+TARGET_LINK_LIBRARIES(${TARGET_LIB} ${PRIVILEGE_INFO_DEPS_LIBRARIES})
+
+SET_TARGET_PROPERTIES(${TARGET_LIB}
+ PROPERTIES
+ VERSION "1.0.0"
+ SOVERSION 1
+ C_VISIBILITY_PRESET hidden)
+
+INSTALL(TARGETS ${TARGET_LIB} LIBRARY)
+
+INSTALL(FILES
+ ${CMAKE_SOURCE_DIR}/src/include/privilege_information.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+CONFIGURE_FILE(../privilege-info.pc.in privilege-info.pc @ONLY)
+INSTALL(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/privilege-info.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-SET(PACKAGE_NAME tc-privilege-info)
-PROJECT(${PACKAGE_NAME})
+SET(TARGET_TESTS "privilege-info-tests")
+ADD_EXECUTABLE(${TARGET_TESTS} tc_privilege_info.c ../src/privilege_information.c)
+TARGET_LINK_LIBRARIES(${TARGET_TESTS} ${PRIVILEGE_INFO_DEPS_LIBRARIES})
-SET(TC1_NAME tc-privilege-info)
-
-SET(TC1_SRCS ${PROJECT_SOURCE_DIR}/tc_privilege_info.c)
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/include)
-
-SET(requires glib-2.0 dlog)
-INCLUDE(FindPkgConfig)
-pkg_check_modules(${PACKAGE_NAME} REQUIRED ${requires})
-FOREACH(flag ${${PACKAGE_NAME}_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIC -Wall -fvisibility=hidden -D_WITH_SYSTEMD_")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${PACKAGE_NAME_CFLAGS}")
-
-ADD_EXECUTABLE(${TC1_NAME} ${TC1_SRCS})
-TARGET_LINK_LIBRARIES(${TC1_NAME} "privilege-info")
-
-INSTALL(TARGETS ${TC1_NAME} DESTINATION /usr/bin)
+INSTALL(TARGETS ${TARGET_TESTS} RUNTIME)