Additonal Mutex lock applied
[platform/core/connectivity/libwifi-direct.git] / src / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(wifi-direct C)
3
4 # Global setting
5 SET(VERSION 0.0)
6
7 MACRO(GET_TARGET_PROPERTY_WITH_DEFAULT _variable _target _property _default_value)
8         GET_TARGET_PROPERTY (${_variable} ${_target} ${_property})
9         IF (${_variable} MATCHES NOTFOUND)
10                 SET (${_variable} ${_default_value})
11         ENDIF (${_variable} MATCHES NOTFOUND)
12 ENDMACRO (GET_TARGET_PROPERTY_WITH_DEFAULT)
13
14 MACRO(CREATE_LIBTOOL_FILE _target _install_DIR)
15         GET_TARGET_PROPERTY(_target_location ${_target} LOCATION)
16         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_static_lib ${_target} STATIC_LIB "")
17         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dependency_libs ${_target} LT_DEPENDENCY_LIBS "")
18         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_current ${_target} LT_VERSION_CURRENT 0)
19         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_age ${_target} LT_VERSION_AGE 0)
20         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_revision ${_target} LT_VERSION_REVISION 0)
21         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_installed ${_target} LT_INSTALLED yes)
22         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_shouldnotlink ${_target} LT_SHOULDNOTLINK yes)
23         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dlopen ${_target} LT_DLOPEN "")
24         GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dlpreopen ${_target} LT_DLPREOPEN "")
25         GET_FILENAME_COMPONENT(_laname ${_target_location} NAME_WE)
26         GET_FILENAME_COMPONENT(_soname ${_target_location} NAME)
27         SET(_laname2 ${_laname}.la)
28         SET(_laname ${PROJECT_BINARY_DIR}/${_laname}.la)
29         FILE(WRITE ${_laname} "# ${_laname2} - a libtool library file\n")
30         FILE(APPEND ${_laname} "# Generated by CMake ${CMAKE_VERSION} (like GNU libtool)\n")
31         FILE(APPEND ${_laname} "\n# Please DO NOT delete this file!\n# It is necessary for linking the library with libtool.\n\n" )
32         FILE(APPEND ${_laname} "# The name that we can dlopen(3).\n")
33         FILE(APPEND ${_laname} "dlname='${_soname}'\n\n")
34         FILE(APPEND ${_laname} "# Names of this library.\n")
35         FILE(APPEND ${_laname} "library_names='${_soname}.${_target_current}.${_target_age}.${_target_revision} ${_soname}.${_target_current} ${_soname}'\n\n")
36         FILE(APPEND ${_laname} "# The name of the static archive.\n")
37         FILE(APPEND ${_laname} "old_library='${_target_static_lib}'\n\n")
38         FILE(APPEND ${_laname} "# Libraries that this one depends upon.\n")
39         FILE(APPEND ${_laname} "dependency_libs='${_target_dependency_libs}'\n\n")
40         FILE(APPEND ${_laname} "# Names of additional weak libraries provided by this library\n")
41         FILE(APPEND ${_laname} "weak_library_names=\n\n")
42         FILE(APPEND ${_laname} "# Version information for ${_laname2}.\n")
43         FILE(APPEND ${_laname} "current=${_target_current}\n")
44         FILE(APPEND ${_laname} "age=${_target_age}\n")
45         FILE(APPEND ${_laname} "revision=${_target_revision}\n\n")
46         FILE(APPEND ${_laname} "# Is this an already installed library?\n")
47         FILE(APPEND ${_laname} "installed=${_target_installed}\n\n")
48         FILE(APPEND ${_laname} "# Should we warn about portability when linking against -modules?\n")
49         FILE(APPEND ${_laname} "shouldnotlink=${_target_shouldnotlink}\n\n")
50         FILE(APPEND ${_laname} "# Files to dlopen/dlpreopen\n")
51         FILE(APPEND ${_laname} "dlopen='${_target_dlopen}'\n")
52         FILE(APPEND ${_laname} "dlpreopen='${_target_dlpreopen}'\n\n")
53         FILE(APPEND ${_laname} "# Directory that this library needs to be installed in:\n")
54         FILE(APPEND ${_laname} "libdir='${CMAKE_INSTALL_PREFIX}${_install_DIR}'\n")
55         INSTALL( FILES ${_laname} DESTINATION ${CMAKE_INSTALL_PREFIX}${_install_DIR})
56 ENDMACRO(CREATE_LIBTOOL_FILE)
57
58 # Build type : Release
59 IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
60         SET(CMAKE_BUILD_TYPE "Release")
61 ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
62 MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
63
64 # Set required packages
65 INCLUDE(FindPkgConfig)
66 pkg_check_modules(pkgs REQUIRED vconf glib-2.0 dbus-1 dbus-glib-1 gthread-2.0 dlog)
67
68 FOREACH(flag ${pkgs_CFLAGS})
69         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -g -DUSE_DLOG")
70 ENDFOREACH(flag)
71
72 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
73                 ${CMAKE_SOURCE_DIR}/src/include)
74
75 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -lpthread -g -DUSE_DLOG")
76 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -DUSE_DLOG")
77 SET(CMAKE_C_FLAGS_RELEASE "-O2")
78
79 FIND_PROGRAM(UNAME NAMES uname)
80 EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
81 IF("${ARCH}" STREQUAL "arm")
82         ADD_DEFINITIONS("-DTARGET")
83         MESSAGE("add -DTARGET")
84 ENDIF("${ARCH}" STREQUAL "arm")
85
86 ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
87 ADD_DEFINITIONS("-DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" ")
88
89 # Linker flags
90 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
91
92 # Build
93 SET(SRCS
94                 wifi-direct-client-proxy.c
95                 wifi-direct-utils.c
96 )
97
98 ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
99 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
100 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION} SOVERSION 0)
101 CREATE_LIBTOOL_FILE(${PROJECT_NAME} /lib)
102
103 # pkgconfig file
104 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
105 CONFIGURE_FILE(wifi-direct.pc.in wifi-direct.pc @ONLY)
106
107 # Install
108 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR} COMPONENT Runtime)
109 INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wifi-direct.h DESTINATION include/wifi-direct)
110 INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wifi-direct-internal.h DESTINATION include/wifi-direct)
111 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wifi-direct.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
112