2 #############################################
4 # Step 1. Set Variable and Build Dependency
7 # set a name for the entire project
10 SET(LIBNAME "lib${PROJECT_NAME}")
11 SET(LIBDIR "${LIB_INSTALL_DIR}")
14 SET(FW_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../include")
15 SET(FW_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../src/framework")
16 SET(FW_COMPONETS "account;data-adapter;device;device-manager;engine-controller;event;fsapi;initialization;network-access;platform-monitor;plugin;protocol-binder;security-assistant;utility")
18 # checks for build dependency modules : a pkg-config module for CMake
19 INCLUDE(FindPkgConfig)
20 pkg_check_modules(LPKGS REQUIRED
34 #############################################
36 # Step 2. Set Compile Environment
39 # set extra cflags from build dependency
40 STRING(REPLACE ";" " " EXTRA_CFLAGS "${LPKGS_CFLAGS}")
41 #SET(EXTRA_CFLAGS "-fvisibility=hidden ${EXTRA_CFLAGS}")
43 # find all source files in a directory.
44 FOREACH(FW_COMPONENT ${FW_COMPONETS})
45 AUX_SOURCE_DIRECTORY(${FW_SRC_DIR}/${FW_COMPONENT} SRCS)
46 ENDFOREACH(FW_COMPONENT)
48 # add include directories to the build.
49 INCLUDE_DIRECTORIES(${FW_INCLUDE_DIR})
50 FOREACH(FW_COMPONENT ${FW_COMPONETS})
51 INCLUDE_DIRECTORIES(${FW_INCLUDE_DIR}/${FW_COMPONENT})
52 ENDFOREACH(FW_COMPONENT)
53 INCLUDE_DIRECTORIES(${FW_SRC_DIR})
54 FOREACH(FW_COMPONENT ${FW_COMPONETS})
55 INCLUDE_DIRECTORIES(${FW_SRC_DIR}/${FW_COMPONENT})
56 ENDFOREACH(FW_COMPONENT)
58 #############################################
60 # Step 3. Set Link Environment
63 # add a library to the project using the specified source files.
64 ADD_LIBRARY(${LIBNAME} SHARED ${SRCS})
66 # link a target to given libraries from pkg-config.
67 TARGET_LINK_LIBRARIES(${LIBNAME} ${LPKGS_LDFLAGS} "-lgcrypt")
69 # sets additional compiler flags used to build sources within the target.
70 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
72 # override the default target name prefix (such as "lib")
73 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES PREFIX "")
75 # specify the build version
76 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES VERSION ${VERSION})
78 # specify the api version
79 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES SOVERSION ${VERSION_MAJOR})
82 #############################################
84 # Step 4. Install packages
87 # install library files
88 INSTALL(TARGETS ${LIBNAME} DESTINATION ${LIB_INSTALL_DIR})
91 CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
92 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
94 # install header files
95 INSTALL(FILES ${FW_INCLUDE_DIR}/sync_agent.h DESTINATION include/)
96 FOREACH(FW_COMPONENT ${FW_COMPONETS})
97 INSTALL(DIRECTORY ${FW_INCLUDE_DIR}/${FW_COMPONENT}/ DESTINATION include/sync-agent/${FW_COMPONENT} FILES_MATCHING PATTERN "*.h")
98 ENDFOREACH(FW_COMPONENT)
100 ADD_DEFINITIONS("-DGLIB_VERSION_MIN_REQUIRED=(2<<16|32<<8) ")