use pkgconfig for dependency
[platform/framework/native/appfw.git] / src / appfw / CMakeLists.txt
1 SET (this_target osp-appfw)
2
3 INCLUDE_DIRECTORIES(
4         ${SLP_INCLUDE_DIRS}
5         ${CMAKE_SOURCE_DIR}/inc
6         ${CMAKE_SOURCE_DIR}/src/base/inc
7         ${CMAKE_SOURCE_DIR}/src/app/inc
8         ${CMAKE_SOURCE_DIR}/src/security/inc
9         ${CMAKE_SOURCE_DIR}/src/io/inc
10         )
11
12 SET (${this_target}_SOURCE_FILES
13         ${CMAKE_SOURCE_DIR}/src/osp-init/Osp.cpp
14 )
15     
16 SET(EXTRA_CFLAGS  "${EXTRA_CFLAGS} -Wall" )
17
18 ## SET C COMPILER FLAGS
19 SET(CMAKE_C_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS}")
20
21 ## SET CPP COMPILER FLAGS
22 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
23 SET(CMAKE_CXX_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS}")
24
25 ## Create Library
26 ADD_LIBRARY (${this_target} SHARED ${${this_target}_SOURCE_FILES})
27
28 SET(STATIC_LIBS app base io locales security system text newlib-compat)
29
30 SET_TARGET_PROPERTIES(${this_target} PROPERTIES LINK_INTERFACE_LIBRARIES "")
31
32 ADD_DEPENDENCIES(${this_target} ${STATIC_LIBS})
33
34 MACRO(OSP_ADD_OBJS_IN_ARCHIVE archives)
35     SET(LINK_OBJECTS_IN_ARCHIVE)
36     FOREACH(archive ${ARGV})
37       SET(LINK_OBJECTS_IN_ARCHIVE "${LINK_OBJECTS_IN_ARCHIVE} -l${archive}")
38     ENDFOREACH(archive)
39     SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--whole-archive ${LINK_OBJECTS_IN_ARCHIVE} -Wl,-no-whole-archive")
40 ENDMACRO(OSP_ADD_OBJS_IN_ARCHIVE)
41
42 OSP_ADD_OBJS_IN_ARCHIVE(${STATIC_LIBS})
43            
44 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--as-needed")
45
46 TARGET_LINK_LIBRARIES( ${this_target} ${STATIC_LIBS})
47 TARGET_LINK_LIBRARIES(${this_target} "-ldl" )
48 TARGET_LINK_LIBRARIES(${this_target} "-lpthread" )
49 TARGET_LINK_LIBRARIES(${this_target} "-lrt" )
50 #TARGET_LINK_LIBRARIES(${this_target} "-ldukgenerator" )
51 #TARGET_LINK_LIBRARIES(${this_target} "-lcryptsvc" )
52 TARGET_LINK_LIBRARIES(${this_target} "-lalarm" )
53 TARGET_LINK_LIBRARIES(${this_target} "-lprivacy-manager-client" )
54 TARGET_LINK_LIBRARIES(${this_target} ${pkgs_LDFLAGS})
55
56
57 SET_TARGET_PROPERTIES(${this_target}
58                 PROPERTIES
59                 VERSION ${FULLVER}
60                 SOVERSION ${MAJORVER}
61                 CLEAN_DIRECT_OUTPUT 1
62 )
63 ADD_CUSTOM_COMMAND(TARGET ${this_target}
64                 POST_BUILD
65                 COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX} ${LIBRARY_OUTPUT_PATH}/debug/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX}.${FULLVER} 
66                 COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX}.${FULLVER} ${LIBRARY_OUTPUT_PATH}/debug/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX}.${MAJORVER}
67                 COMMAND ${CMAKE_STRIP} --strip-unneeded ${LIBRARY_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX}
68                 COMMENT "strip ${this_target}"
69 )   
70
71
72 SET(PC_NAME ${this_target})
73 SET(PC_REQUIRED ${pc_requires})
74 SET(PC_LDFLAGS -l${this_target})
75
76 # pkgconfig file
77 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/${this_target}.pc.in ${CMAKE_SOURCE_DIR}/${this_target}.pc @ONLY)