CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(wifi-direct C) # Global setting SET(VERSION 0.0) MACRO(GET_TARGET_PROPERTY_WITH_DEFAULT _variable _target _property _default_value) GET_TARGET_PROPERTY (${_variable} ${_target} ${_property}) IF (${_variable} MATCHES NOTFOUND) SET (${_variable} ${_default_value}) ENDIF (${_variable} MATCHES NOTFOUND) ENDMACRO (GET_TARGET_PROPERTY_WITH_DEFAULT) MACRO(CREATE_LIBTOOL_FILE _target _install_DIR) GET_TARGET_PROPERTY(_target_location ${_target} LOCATION) GET_TARGET_PROPERTY_WITH_DEFAULT(_target_static_lib ${_target} STATIC_LIB "") GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dependency_libs ${_target} LT_DEPENDENCY_LIBS "") GET_TARGET_PROPERTY_WITH_DEFAULT(_target_current ${_target} LT_VERSION_CURRENT 0) GET_TARGET_PROPERTY_WITH_DEFAULT(_target_age ${_target} LT_VERSION_AGE 0) GET_TARGET_PROPERTY_WITH_DEFAULT(_target_revision ${_target} LT_VERSION_REVISION 0) GET_TARGET_PROPERTY_WITH_DEFAULT(_target_installed ${_target} LT_INSTALLED yes) GET_TARGET_PROPERTY_WITH_DEFAULT(_target_shouldnotlink ${_target} LT_SHOULDNOTLINK yes) GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dlopen ${_target} LT_DLOPEN "") GET_TARGET_PROPERTY_WITH_DEFAULT(_target_dlpreopen ${_target} LT_DLPREOPEN "") GET_FILENAME_COMPONENT(_laname ${_target_location} NAME_WE) GET_FILENAME_COMPONENT(_soname ${_target_location} NAME) SET(_laname2 ${_laname}.la) SET(_laname ${PROJECT_BINARY_DIR}/${_laname}.la) FILE(WRITE ${_laname} "# ${_laname2} - a libtool library file\n") FILE(APPEND ${_laname} "# Generated by CMake ${CMAKE_VERSION} (like GNU libtool)\n") FILE(APPEND ${_laname} "\n# Please DO NOT delete this file!\n# It is necessary for linking the library with libtool.\n\n" ) FILE(APPEND ${_laname} "# The name that we can dlopen(3).\n") FILE(APPEND ${_laname} "dlname='${_soname}'\n\n") FILE(APPEND ${_laname} "# Names of this library.\n") FILE(APPEND ${_laname} "library_names='${_soname}.${_target_current}.${_target_age}.${_target_revision} ${_soname}.${_target_current} ${_soname}'\n\n") FILE(APPEND ${_laname} "# The name of the static archive.\n") FILE(APPEND ${_laname} "old_library='${_target_static_lib}'\n\n") FILE(APPEND ${_laname} "# Libraries that this one depends upon.\n") FILE(APPEND ${_laname} "dependency_libs='${_target_dependency_libs}'\n\n") FILE(APPEND ${_laname} "# Names of additional weak libraries provided by this library\n") FILE(APPEND ${_laname} "weak_library_names=\n\n") FILE(APPEND ${_laname} "# Version information for ${_laname2}.\n") FILE(APPEND ${_laname} "current=${_target_current}\n") FILE(APPEND ${_laname} "age=${_target_age}\n") FILE(APPEND ${_laname} "revision=${_target_revision}\n\n") FILE(APPEND ${_laname} "# Is this an already installed library?\n") FILE(APPEND ${_laname} "installed=${_target_installed}\n\n") FILE(APPEND ${_laname} "# Should we warn about portability when linking against -modules?\n") FILE(APPEND ${_laname} "shouldnotlink=${_target_shouldnotlink}\n\n") FILE(APPEND ${_laname} "# Files to dlopen/dlpreopen\n") FILE(APPEND ${_laname} "dlopen='${_target_dlopen}'\n") FILE(APPEND ${_laname} "dlpreopen='${_target_dlpreopen}'\n\n") FILE(APPEND ${_laname} "# Directory that this library needs to be installed in:\n") FILE(APPEND ${_laname} "libdir='${CMAKE_INSTALL_PREFIX}${_install_DIR}'\n") INSTALL( FILES ${_laname} DESTINATION ${CMAKE_INSTALL_PREFIX}${_install_DIR}) ENDMACRO(CREATE_LIBTOOL_FILE) # Build type : Release IF("${CMAKE_BUILD_TYPE}" STREQUAL "") SET(CMAKE_BUILD_TYPE "Release") ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") # Set required packages INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED vconf glib-2.0 dbus-1 dbus-glib-1 gthread-2.0 dlog) FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -g -DUSE_DLOG") ENDFOREACH(flag) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/include) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -lpthread -g -DUSE_DLOG") SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -DUSE_DLOG") SET(CMAKE_C_FLAGS_RELEASE "-O2") FIND_PROGRAM(UNAME NAMES uname) EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") IF("${ARCH}" STREQUAL "arm") ADD_DEFINITIONS("-DTARGET") MESSAGE("add -DTARGET") ENDIF("${ARCH}" STREQUAL "arm") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" ") # Linker flags SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") # Build SET(SRCS wifi-direct-client-proxy.c wifi-direct-utils.c ) ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION} SOVERSION 0) CREATE_LIBTOOL_FILE(${PROJECT_NAME} /lib) # pkgconfig file SET(PREFIX ${CMAKE_INSTALL_PREFIX}) CONFIGURE_FILE(wifi-direct.pc.in wifi-direct.pc @ONLY) # Install INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR} COMPONENT Runtime) INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wifi-direct.h DESTINATION include/wifi-direct) INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wifi-direct-internal.h DESTINATION include/wifi-direct) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wifi-direct.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)