cmake_minimum_required(VERSION 2.8) set(CMAKE_BUILD_TYPE Release) set (PLUGIN_CONFIG_VERSION_MAJOR 0) set (PLUGIN_CONFIG_VERSION_MINOR 1) set (PLUGIN_CONFIG_VERSION_PATCH 0) set (PLUGIN_CONFIG_SOVERSION 1) option(CPP_IMPLEMENTATION "Choose C++ implementation" OFF) if(CPP_IMPLEMENTATION) project(plugin-config CXX) add_definitions(-DCPP_IMPLEMENTATION) file(GLOB SOURCES src/*.cpp ) file(GLOB INTERFACE_INCLUDES include/*.h include/*.hpp ) else(CPP_IMPLEMENTATION) project(plugin-config C) file(GLOB SOURCES src/*.c ) file(GLOB INTERFACE_INCLUDES include/*.h ) endif(CPP_IMPLEMENTATION) #The path to the top level of the source tree. message (${CMAKE_SOURCE_DIR}) # Add include directories to the build. include_directories(${CMAKE_SOURCE_DIR}/include) include(FindPkgConfig) pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 dlog gobject-2.0 gio-2.0 json-glib-1.0 ) foreach(flag ${pkgs_CFLAGS}) set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") endforeach(flag) # Set the compiler flags for compiling C++ sources set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++0x -Wall -Wextra -fPIC") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -std=gnu99 -Wall -Wextra -fPIC") # macro(REMOVE_C_FLAG flag) # string(REPLACE "${flag}" "-O0" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") # string(REPLACE "${flag}" "-O0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # endmacro() # REMOVE_C_FLAG("-O2") # REMOVE_C_FLAG("-O3") set(EXTRA_LIBS ${EXTRA_LIBS} ${pkgs_LDFLAGS}) set(SHARED_LIBRARY ${PROJECT_NAME}) add_library(${SHARED_LIBRARY} SHARED ${SOURCES}) #Link a target to given libraries. target_link_libraries(${SHARED_LIBRARY} ${EXTRA_LIBS}) set_target_properties(${SHARED_LIBRARY} PROPERTIES VERSION ${PLUGIN_CONFIG_VERSION_MAJOR}.${PLUGIN_CONFIG_VERSION_MINOR} SOVERSION ${PLUGIN_CONFIG_SOVERSION}) # Add an executable to the project using the specified source files. #Link a target to given libraries. target_link_libraries(${EXECUTABLE} ${SHARED_LIBRARY} ${EXTRA_LIBS}) set(USER $ENV{USER}) set(HOME_DIR /home/${USER}) # Provides an option that the user can optionally select. option(INSTALL_INTO_HOME_DIR "Install targets into home directory (for test pusrposes)" OFF) if(INSTALL_INTO_HOME_DIR) # Install directory used by install set(CMAKE_INSTALL_PREFIX ${HOME_DIR}/pluginconfig) endif(INSTALL_INTO_HOME_DIR) #Generate ex-04.pc file from ex-04.pc.in located in the top level source tree subdirectory pkgconfig. configure_file( "${CMAKE_SOURCE_DIR}/pkgconfig/${PROJECT_NAME}.pc.in" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc" @ONLY) # uninstall target # Generate uninstall.cmake file from uninstall.cmake.in located in the top level source tree directory. configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake" IMMEDIATE @ONLY) # Add custom command uninstall intended to unistall previously installed files # ( process ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake) install(TARGETS ${EXECUTABLE} RUNTIME DESTINATION bin) install(TARGETS ${SHARED_LIBRARY} DESTINATION lib) install(FILES ${INTERFACE_INCLUDES} DESTINATION include) install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc" DESTINATION lib/pkgconfig) #install(FILES "${CMAKE_SOURCE_DIR}/config/pluginmanager.ini" DESTINATION /usr/share/cloudbox/config) # build a CPack driven installer package include (InstallRequiredSystemLibraries) set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt") set (CPACK_PACKAGE_VERSION_MAJOR "${PLUGIN_CONFIG_VERSION_MAJOR}") set (CPACK_PACKAGE_VERSION_MINOR "${PLUGIN_CONFIG_VERSION_MINOR}") set (CPACK_PACKAGE_VERSION_PATCH "${PLUGIN_CONFIG_VERSION_PATCH}") set (CPACK_SYSTEM_NAME ${CMAKE_LIBRARY_ARCHITECTURE}) set (CPACK_GENERATOR "DEB") set (CPACK_DEBIAN_PACKAGE_MAINTAINER "Yongjin Kim") #required set (CPACK_PACKAGE_CONTACT "youth.kim@samsung.com") #required include (CPack)