tizen 2.4 release
[framework/convergence/service/service-plugin-client.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2
3 set(CMAKE_BUILD_TYPE Release)
4
5 set (PLUGIN_CONFIG_VERSION_MAJOR 0)
6 set (PLUGIN_CONFIG_VERSION_MINOR 1)
7 set (PLUGIN_CONFIG_VERSION_PATCH 0)
8
9 set (PLUGIN_CONFIG_SOVERSION 1)
10
11 option(CPP_IMPLEMENTATION "Choose C++ implementation" OFF)
12
13 if(CPP_IMPLEMENTATION)
14     project(plugin-config CXX)
15
16     add_definitions(-DCPP_IMPLEMENTATION)
17     file(GLOB SOURCES
18         src/*.cpp
19     )
20
21     file(GLOB INTERFACE_INCLUDES
22         include/*.h
23         include/*.hpp
24     )
25 else(CPP_IMPLEMENTATION)
26     project(plugin-config C)
27     
28     file(GLOB SOURCES
29         src/*.c
30     )
31
32     file(GLOB INTERFACE_INCLUDES
33         include/*.h
34     )
35 endif(CPP_IMPLEMENTATION)
36
37 #The path to the top level of the source tree.
38 message (${CMAKE_SOURCE_DIR})
39
40 # Add include directories to the build.
41 include_directories(${CMAKE_SOURCE_DIR}/include)
42
43 include(FindPkgConfig)
44 pkg_check_modules(pkgs REQUIRED
45     glib-2.0
46     gthread-2.0
47     dlog
48 gobject-2.0
49 gio-2.0
50 json-glib-1.0
51
52 )
53
54 foreach(flag ${pkgs_CFLAGS})
55     set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
56 endforeach(flag)
57
58 # Set the compiler flags for compiling C++ sources
59 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++0x -Wall -Wextra -fPIC")
60 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -std=gnu99 -Wall -Wextra -fPIC")
61
62 # macro(REMOVE_C_FLAG flag)
63 #   string(REPLACE "${flag}" "-O0" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
64 #   string(REPLACE "${flag}" "-O0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
65 # endmacro()
66 # REMOVE_C_FLAG("-O2")
67 # REMOVE_C_FLAG("-O3")
68
69 set(EXTRA_LIBS ${EXTRA_LIBS} ${pkgs_LDFLAGS})
70
71 set(SHARED_LIBRARY ${PROJECT_NAME})
72 add_library(${SHARED_LIBRARY} SHARED ${SOURCES})
73
74 #Link a target to given libraries.
75 target_link_libraries(${SHARED_LIBRARY} ${EXTRA_LIBS})
76
77 set_target_properties(${SHARED_LIBRARY} PROPERTIES VERSION ${PLUGIN_CONFIG_VERSION_MAJOR}.${PLUGIN_CONFIG_VERSION_MINOR} SOVERSION ${PLUGIN_CONFIG_SOVERSION})
78
79 # Add an executable to the project using the specified source files.
80
81 #Link a target to given libraries.
82 target_link_libraries(${EXECUTABLE} ${SHARED_LIBRARY} ${EXTRA_LIBS})
83
84 set(USER $ENV{USER})
85 set(HOME_DIR /home/${USER})
86
87 # Provides an option that the user can optionally select.
88 option(INSTALL_INTO_HOME_DIR "Install targets into home directory (for test pusrposes)" OFF)
89 if(INSTALL_INTO_HOME_DIR)
90     # Install directory used by install
91     set(CMAKE_INSTALL_PREFIX ${HOME_DIR}/pluginconfig)
92 endif(INSTALL_INTO_HOME_DIR)
93
94 #Generate ex-04.pc file from ex-04.pc.in  located in the top level source tree subdirectory pkgconfig. 
95 configure_file(
96     "${CMAKE_SOURCE_DIR}/pkgconfig/${PROJECT_NAME}.pc.in"
97     "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc"
98     @ONLY)
99
100 # uninstall target
101 # Generate uninstall.cmake file from uninstall.cmake.in  located in the top level source tree directory.
102 configure_file(
103     "${CMAKE_CURRENT_SOURCE_DIR}/uninstall.cmake.in"
104     "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
105     IMMEDIATE @ONLY)
106
107 # Add custom command uninstall intended to unistall previously installed files 
108 # ( process ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake)
109 add_custom_target(uninstall
110     COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake)
111     
112 install(TARGETS ${EXECUTABLE} RUNTIME DESTINATION bin)
113 install(TARGETS ${SHARED_LIBRARY} DESTINATION lib)
114 install(FILES ${INTERFACE_INCLUDES} DESTINATION include)
115 install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc" DESTINATION lib/pkgconfig)
116 #install(FILES "${CMAKE_SOURCE_DIR}/config/pluginmanager.ini" DESTINATION /usr/share/cloudbox/config)
117
118 # build a CPack driven installer package
119 include (InstallRequiredSystemLibraries)
120 set (CPACK_RESOURCE_FILE_LICENSE  
121      "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
122 set (CPACK_PACKAGE_VERSION_MAJOR "${PLUGIN_CONFIG_VERSION_MAJOR}")
123 set (CPACK_PACKAGE_VERSION_MINOR "${PLUGIN_CONFIG_VERSION_MINOR}")
124 set (CPACK_PACKAGE_VERSION_PATCH "${PLUGIN_CONFIG_VERSION_PATCH}")
125 set (CPACK_SYSTEM_NAME ${CMAKE_LIBRARY_ARCHITECTURE})
126 set (CPACK_GENERATOR "DEB")
127 set (CPACK_DEBIAN_PACKAGE_MAINTAINER "Yongjin Kim") #required
128 set (CPACK_PACKAGE_CONTACT "youth.kim@samsung.com") #required
129
130 include (CPack)