CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-#SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
-PROJECT(pkgmgr-info C)
+PROJECT(pkgmgr-info)
-SET(VERSION 0.0.17)
-SET(VERSION_MAJOR 0)
+INCLUDE(TizenCommon)
SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(EXEC_PREFIX "\${prefix}")
-SET(LIBDIR "\${prefix}/lib")
SET(INCLUDEDIR "\${prefix}/include")
+SET(CMAKE_SKIP_BUILD_RPATH true)
-set(CMAKE_SKIP_BUILD_RPATH true)
+ADD_DEFINITIONS("-DLIB_PATH=\"${LIB_INSTALL_DIR}\"")
### Local include directories
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/parser)
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_SOURCE_DIR}/parser/include
+ ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/common
+ ${CMAKE_SOURCE_DIR}/src/common/socket
+ ${CMAKE_SOURCE_DIR}/src/common/parcel
+ ${CMAKE_SOURCE_DIR}/src/server
+ ${CMAKE_SOURCE_DIR}/src/server/cynara_checker
+ ${CMAKE_SOURCE_DIR}/src/server/filter_checker
+ ${CMAKE_SOURCE_DIR}/src/server/database
+ ${CMAKE_SOURCE_DIR}/src/server/request_handler
+)
### Required packages
INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0)
-
-FOREACH(flag ${pkgs_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-pkg_check_modules(libpkgs REQUIRED glib-2.0 dlog vconf sqlite3 db-util libxml-2.0)
+pkg_check_modules(libpkgs REQUIRED
+ glib-2.0
+ gio-2.0
+ gio-unix-2.0
+ dlog
+ vconf
+ libtzplatform-config
+ libsmack
+ bundle
+ capi-system-info
+ minizip
+ libsystemd
+ parcel
+ cynara-client-async
+ cynara-session
+ cynara-creds-socket
+ capi-system-resource
+)
FOREACH(flag ${libpkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-
-## About debug
-SET(debug_type "-DPM_CONSOLE_USE") # for debug - use console window
+pkg_check_modules(libpkgs_server REQUIRED
+ glib-2.0
+ gio-2.0
+ gio-unix-2.0
+ dlog
+ vconf
+ sqlite3
+ libtzplatform-config
+ libsmack
+ bundle
+ capi-system-info
+ minizip
+ libsystemd
+ parcel
+ cynara-client-async
+ cynara-session
+ cynara-creds-socket
+ capi-system-resource
+ tizen-database
+)
+
+FOREACH(flag ${libpkgs_server_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
## Additional flag
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -g -Wall")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-################## ## build comm libraries
-add_subdirectory(parser)
+# Linker flags
+SET(EXTRA_LINKER_FLAGS "-Wl,--as-needed")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINKER_FLAGS}")
-## build pkgmgr-info library
-add_library(pkgmgr-info SHARED src/pkgmgr-info.c src/pkgmgr-info-internal.c)
+IF(NOT ASAN_ENABLED)
+ ENABLE_TESTING()
+ SET(TARGET_PKGMGR_INFO_UNIT_TEST "pkgmgr-info-unit-test")
+ENDIF(NOT ASAN_ENABLED)
-
-SET_TARGET_PROPERTIES(pkgmgr-info PROPERTIES SOVERSION ${VERSION_MAJOR})
-SET_TARGET_PROPERTIES(pkgmgr-info PROPERTIES VERSION ${VERSION})
-TARGET_LINK_LIBRARIES(pkgmgr-info pkgmgr_parser ${libpkgs_LDFLAGS})
+################## ## build comm libraries
+ADD_SUBDIRECTORY(parser)
+ADD_SUBDIRECTORY(tool)
+ADD_SUBDIRECTORY(plugin_list)
+ADD_SUBDIRECTORY(src)
+IF(NOT ASAN_ENABLED)
+ ADD_SUBDIRECTORY(test)
+ENDIF(NOT ASAN_ENABLED)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/pkgmgr-info.pc.in ${CMAKE_BINARY_DIR}/pkgmgr-info.pc @ONLY)
-configure_file(parser_path.conf.in parser_path.conf @ONLY)
+CONFIGURE_FILE(pkg_db_version.txt.in pkg_db_version.txt @ONLY)
-INSTALL(TARGETS pkgmgr-info DESTINATION lib COMPONENT RuntimeLibraries)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-info.pc DESTINATION lib/pkgconfig)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/pkgmgr-info.h DESTINATION include)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/parser_path.conf DESTINATION ${PREFIX}/etc/package-manager/)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-info.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkg_db_version.txt DESTINATION ${SYSCONFDIR}/package-manager/)