Release version 0.3.22
[platform/core/appfw/badge.git] / CMakeLists.txt
index 224a358..50288a3 100644 (file)
@@ -1,71 +1,50 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(badge C)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)
+
+PROJECT(badge-capi)
 
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
-SET(EXEC_PREFIX "\${prefix}")
-SET(PROJECT_NAME "${PROJECT_NAME}")
+SET(BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
 SET(LIBDIR ${LIB_INSTALL_DIR})
-SET(INCLUDEDIR "\${prefix}/include/${PROJECT_NAME}")
-SET(VERSION_MAJOR 0)
-SET(VERSION "${VERSION_MAJOR}.0.1")
-
-SET(CMAKE_SKIP_BUILD_RPATH true)
-
-SET(INSTALL_HEADERS
-       badge.h
-       badge_db.h
-       badge_error.h
-)
-
-SET(SRCS
-       src/badge.c
-       src/badge_db.c
-       src/badge_ipc.c
-       src/badge_internal.c
-)
-
-SET(SUBMODULES
-       badge
-)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(INCLUDEDIR "\${prefix}/include/badge")
 
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED
-       aul
-       dlog
-       dbus-1
-       dbus-glib-1
-       vconf
-       com-core
-       libtzplatform-config
-)
+## Compiler flags
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -g -Wall -Werror")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++14 -Wall -Werror")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
 
-FOREACH(flag ${pkgs_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+## Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed,--gc-sections -pie")
 
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS}")
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
 
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+## Targets
+SET(TARGET_BADGE "badge")
+SET(TARGET_BADGE_INIT "badge_init")
 
-ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ENABLE_TESTING()
+SET(TARGET_BADGE_UNIT_TEST "badge_unittests")
 ADD_DEFINITIONS("-DBADGE_USE_DLOG")
 
-FOREACH(lib_file ${SUBMODULES})
-       ADD_LIBRARY(${lib_file} SHARED ${SRCS})
-       TARGET_LINK_LIBRARIES(${lib_file} ${pkgs_LDFLAGS})
-       SET_TARGET_PROPERTIES(${lib_file} PROPERTIES SOVERSION ${VERSION_MAJOR})
-       SET_TARGET_PROPERTIES(${lib_file} PROPERTIES VERSION ${VERSION})
-    INSTALL(TARGETS ${lib_file} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
-ENDFOREACH(lib_file)
-
-FOREACH(pcfile ${SUBMODULES})
-       CONFIGURE_FILE(${pcfile}.pc.in ${pcfile}.pc @ONLY)
-       SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${pcfile}.pc")
-    INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${pcfile}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
-ENDFOREACH(pcfile)
-
-FOREACH(hfile ${INSTALL_HEADERS})
-       INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/${hfile} DESTINATION include/${PROJECT_NAME})
-ENDFOREACH(hfile)
-
+INCLUDE(FindPkgConfig)
+INCLUDE(ApplyPkgConfig)
+
+## Find all needed packages once
+PKG_CHECK_MODULES(AUL_DEP REQUIRED aul)
+PKG_CHECK_MODULES(DLOG_DEPS REQUIRED dlog)
+PKG_CHECK_MODULES(VCONF_DEPS REQUIRED vconf)
+PKG_CHECK_MODULES(PKGMGR_DEPS REQUIRED capi-appfw-package-manager)
+PKG_CHECK_MODULES(SYSTEM_INFO_DEPS REQUIRED capi-system-info)
+PKG_CHECK_MODULES(DB_UTIL_DEPS REQUIRED db-util)
+PKG_CHECK_MODULES(PLATFORM_CONFIG_DEPS REQUIRED libtzplatform-config)
+PKG_CHECK_MODULES(PKGMGR_INFO_DEPS REQUIRED pkgmgr-info)
+PKG_CHECK_MODULES(SMACK_DEPS REQUIRED libsmack)
+PKG_CHECK_MODULES(GLIB_DEPS REQUIRED glib-2.0)
+PKG_CHECK_MODULES(GIO_DEPS REQUIRED gio-2.0)
+PKG_CHECK_MODULES(GOBJECT_DEPS REQUIRED gobject-2.0)
+PKG_CHECK_MODULES(BUNDLE_DEPS REQUIRED bundle)
+PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
+
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(tool)
+ADD_SUBDIRECTORY(tests)