Skip to content

Commit

Permalink
Merge branch 'modern-cmake' into development
Browse files Browse the repository at this point in the history
  • Loading branch information
saschazelzer committed Jan 18, 2017
2 parents aad94b8 + 04d4085 commit de2c4ad
Show file tree
Hide file tree
Showing 23 changed files with 67 additions and 163 deletions.
24 changes: 3 additions & 21 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Extract the current version from the VERSION file
file(STRINGS VERSION _version LIMIT_COUNT 1)

set(US_CMAKE_MINIMUM_REQUIRED_VERSION 3.0)
set(US_CMAKE_MINIMUM_REQUIRED_VERSION 3.1)

cmake_minimum_required(VERSION ${US_CMAKE_MINIMUM_REQUIRED_VERSION})

Expand Down Expand Up @@ -30,6 +30,8 @@ endforeach()
# Check minimum required compiler versions
#------------------------------------------------------------------------------

set(CMAKE_CXX_EXTENSIONS OFF)

# We make use of the following C++11 language and library features:
#
# Language feature GCC Clang AppleClang VisualStudio
Expand Down Expand Up @@ -265,8 +267,6 @@ endif()
#-----------------------------------------------------------------------------

set(US_HAVE_VISIBILITY_ATTRIBUTE 0)
set(US_CXX11_FLAGS )
set(US_CXX11_LINK_FLAGS )
set(US_CXX_TSAN_FLAGS )
set(US_TSAN_LINK_FLAGS )

Expand All @@ -279,23 +279,8 @@ if(MSVC)
endforeach()
set(US_CXX_FLAGS "/MP /WX ${US_CXX_FLAGS}")
else()
# C++11 support
set(US_CXX11_FLAGS -std=c++11)
usFunctionCheckCompilerFlags(${US_CXX11_FLAGS} _have_cxx11)
if(_have_cxx11)
set(US_CXX_FLAGS "${US_CXX_FLAGS} ${US_CXX11_FLAGS}")
else()
set(US_CXX11_FLAGS -std=c++0x)
usFunctionCheckCompilerFlags(${US_CXX11_FLAGS} _have_cxx0x)
if(_have_cxx0x)
set(US_CXX_FLAGS "${US_CXX_FLAGS} ${US_CXX11_FLAGS}")
else()
set(US_CXX11_FLAGS )
endif()
endif()

if(US_COMPILER_APPLE_CLANG)
set(US_CXX11_FLAGS "${US_CXX11_FLAGS} -stdlib=libc++")
set(US_CXX_FLAGS "${US_CXX_FLAGS} -stdlib=libc++")
endif()

Expand Down Expand Up @@ -445,7 +430,6 @@ set(US_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/third_party ${PROJECT_BINARY_DIR}/incl
# Configure CppMicroServicesConfig.cmake for the build tree.
# The file is used in sub-directories.

set(PACKAGE_CONFIG_INCLUDE_DIR ${US_INCLUDE_DIRS})
set(PACKAGE_CONFIG_RUNTIME_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(PACKAGE_CONFIG_CMAKE_DIR ${US_CMAKE_DIR})

Expand All @@ -468,8 +452,6 @@ configure_file(
@ONLY
)

include_directories(${US_INCLUDE_DIRS})

add_subdirectory(tools/rc)

export(TARGETS ${US_RCC_EXECUTABLE_TARGET}
Expand Down
60 changes: 0 additions & 60 deletions CppMicroServicesConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@
# sets the following variables which can be used in other
# CMake projects to build and link against @PROJECT_NAME@:
#
# US_INCLUDE_DIRS
# US_LIBRARIES
# US_RUNTIME_LIBRARY_DIRS
#
# The following variables are aliases for the ones above:
#
# CppMicroServices_INCLUDE_DIRS
# CppMicroServices_LIBRARIES
# CppMicroServices_RUNTIME_LIBRARY_DIRS
#
Expand All @@ -26,19 +24,6 @@
#
# US_RCC_EXECUTABLE_TARGET
#
# US_CXX_FLAGS
# US_CXX_FLAGS_RELEASE
# US_CXX_FLAGS_DEBUG
# US_C_FLAGS
# US_C_FLAGS_RELEASE
# US_C_FLAGS_DEBUG
# US_LINK_FLAGS
# US_LINK_FLAGS_RELEASE
# US_LINK_FLAGS_DEBUG
# US_COMPILE_DEFINITIONS
# US_COMPILE_DEFINITIONS_RELEASE
# US_COMPILE_DEFINITIONS_DEBUG
#
# US_VERSION
# US_VERSION_MAJOR
# US_VERSION_MINOR
Expand All @@ -57,19 +42,6 @@
# US_<component>_VERSION_TWEAK
# US_<component>_VERSION_COUNT
#
# US_<component>_CXX_FLAGS
# US_<component>_CXX_FLAGS_RELEASE
# US_<component>_CXX_FLAGS_DEBUG
# US_<component>_C_FLAGS
# US_<component>_C_FLAGS_RELEASE
# US_<component>_C_FLAGS_DEBUG
# US_<component>_LINK_FLAGS
# US_<component>_LINK_FLAGS_RELEASE
# US_<component>_LINK_FLAGS_DEBUG
# US_<component>_COMPILE_DEFINITIONS
# US_<component>_COMPILE_DEFINITIONS_RELEASE
# US_<component>_COMPILE_DEFINITIONS_DEBUG
#

@PACKAGE_INIT@

Expand Down Expand Up @@ -109,24 +81,9 @@ if(US_ENABLE_THREADING_SUPPORT AND NOT CMAKE_THREAD_LIBS_INIT)
find_package(Threads REQUIRED)
endif()

# Global include directory
set(US_INCLUDE_DIRS "@PACKAGE_CONFIG_INCLUDE_DIR@")

# Clear variables
set(US_LIBRARIES )
set(US_RUNTIME_LIBRARY_DIRS )
set(US_CXX_FLAGS "@US_CXX11_FLAGS@")
set(US_CXX_FLAGS_RELEASE )
set(US_CXX_FLAGS_DEBUG )
set(US_C_FLAGS )
set(US_C_FLAGS_RELEASE )
set(US_C_FLAGS_DEBUG )
set(US_LINK_FLAGS )
set(US_LINK_FLAGS_RELEASE )
set(US_LINK_FLAGS_DEBUG )
set(US_COMPILE_DEFINITIONS )
set(US_COMPILE_DEFINITIONS_RELEASE )
set(US_COMPILE_DEFINITIONS_DEBUG )

# Components support
set(US_BUNDLES Framework HttpService WebConsole ShellService) # ConfigAdmin EventAdmin ...
Expand Down Expand Up @@ -162,21 +119,8 @@ foreach(component ${US_BUNDLES_NEEDED})
endif()

if(US_${component}_FOUND)
list(APPEND US_INCLUDE_DIRS ${US_${component}_INCLUDE_DIRS})
list(APPEND US_LIBRARIES ${US_${component}_LIBRARIES})
list(APPEND US_RUNTIME_LIBRARY_DIRS ${US_${component}_RUNTIME_LIBRARY_DIRS})
set(US_CXX_FLAGS "${US_CXX_FLAGS} ${US_${component}_CXX_FLAGS}")
set(US_CXX_FLAGS_RELEASE "${US_CXX_FLAGS_RELEASE} ${US_${component}_CXX_FLAGS_RELEASE}")
set(US_CXX_FLAGS_DEBUG "${US_CXX_FLAGS_DEBUG} ${US_${component}_CXX_FLAGS_DEBUG}")
set(US_C_FLAGS "${US_C_FLAGS} ${US_${component}_C_FLAGS}")
set(US_C_FLAGS_RELEASE "${US_C_FLAGS_RELEASE} ${US_${component}_C_FLAGS_RELEASE}")
set(US_C_FLAGS_DEBUG "${US_C_FLAGS_DEBUG} ${US_${component}_C_FLAGS_DEBUG}")
set(US_LINK_FLAGS "${US_LINK_FLAGS} ${US_${component}_LINK_FLAGS}")
set(US_LINK_FLAGS_RELEASE "${US_LINK_FLAGS_RELEASE} ${US_${component}_LINK_FLAGS_RELEASE}")
set(US_LINK_FLAGS_DEBUG "${US_LINK_FLAGS_DEBUG} ${US_${component}_LINK_FLAGS_DEBUG}")
set(US_COMPILE_DEFINITIONS "${US_COMPILE_DEFINITIONS} ${US_${component}_COMPILE_DEFINITIONS}")
set(US_COMPILE_DEFINITIONS_RELEASE "${US_COMPILE_DEFINITIONS_RELEASE} ${US_${component}_COMPILE_DEFINITIONS_RELEASE}")
set(US_COMPILE_DEFINITIONS_DEBUG "${US_COMPILE_DEFINITIONS_DEBUG} ${US_${component}_COMPILE_DEFINITIONS_DEBUG}")

set(US_${component}_VERSION ${${component}_VERSION})
set(US_${component}_VERSION_MAJOR ${${component}_VERSION_MAJOR})
Expand All @@ -191,17 +135,13 @@ foreach(component ${US_BUNDLES_NEEDED})
endif()
endforeach()

if(US_INCLUDE_DIRS)
list(REMOVE_DUPLICATES US_INCLUDE_DIRS)
endif()
if(US_LIBRARIES)
list(REMOVE_DUPLICATES US_LIBRARIES)
endif()
if(US_RUNTIME_LIBRARY_DIRS)
list(REMOVE_DUPLICATES US_RUNTIME_LIBRARY_DIRS)
endif()

set(CppMicroServices_INCLUDE_DIRS ${US_INCLUDE_DIRS})
set(CppMicroServices_LIBRARIES ${US_LIBRARIES})
set(CppMicroServices_RUNTIME_LIBRARY_DIRS ${US_RUNTIME_LIBRARY_DIRS})

Expand Down
14 changes: 0 additions & 14 deletions cmake/usBundleConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -1,19 +1,5 @@
@PACKAGE_INIT@

set(US_@PROJECT_NAME@_CXX_FLAGS "")
set(US_@PROJECT_NAME@_CXX_FLAGS_RELEASE "")
set(US_@PROJECT_NAME@_CXX_FLAGS_DEBUG "")
set(US_@PROJECT_NAME@_C_FLAGS "")
set(US_@PROJECT_NAME@_C_FLAGS_RELEASE "")
set(US_@PROJECT_NAME@_C_FLAGS_DEBUG "")
set(US_@PROJECT_NAME@_LINK_FLAGS "")
set(US_@PROJECT_NAME@_LINK_FLAGS_RELEASE "")
set(US_@PROJECT_NAME@_LINK_FLAGS_DEBUG "")
set(US_@PROJECT_NAME@_COMPILE_DEFINITIONS "")
set(US_@PROJECT_NAME@_COMPILE_DEFINITIONS_RELEASE "")
set(US_@PROJECT_NAME@_COMPILE_DEFINITIONS_DEBUG "")

set(US_@PROJECT_NAME@_INCLUDE_DIRS "@PACKAGE_CONFIG_INCLUDE_DIR@")
set(US_@PROJECT_NAME@_LIBRARIES @PROJECT_TARGET@)
set(US_@PROJECT_NAME@_RUNTIME_LIBRARY_DIRS "@PACKAGE_CONFIG_RUNTIME_LIBRARY_DIR@")

Expand Down
2 changes: 1 addition & 1 deletion cmake/usFunctionCompileSnippets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function(usFunctionCompileSnippets snippet_path)
set(snippet_target_name "Snippet-${snippet_exec_name}")

add_executable(${snippet_target_name} ${snippet_src_files})
target_link_libraries(${snippet_target_name} ${PROJECT_TARGET} ${snippet_link_libraries})
target_link_libraries(${snippet_target_name} ${PROJECT_TARGET} ${snippet_link_libraries} ${US_LIBRARIES})
set_property(TARGET ${snippet_target_name} APPEND PROPERTY COMPILE_DEFINITIONS US_BUNDLE_NAME=main)
set_property(TARGET ${snippet_target_name} PROPERTY US_BUNDLE_NAME main)
set_target_properties(${snippet_target_name} PROPERTIES
Expand Down
2 changes: 1 addition & 1 deletion cmake/usFunctionCreateTestBundle.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ macro(_us_create_test_bundle_helper)
set_property(TARGET ${name} PROPERTY COMPILE_FLAGS "${_compile_flags} -fPIC")
endif()

target_link_libraries(${name} ${${PROJECT_NAME}_TARGET} ${US_TEST_LINK_LIBRARIES} ${US_LINK_LIBRARIES})
target_link_libraries(${name} ${${PROJECT_NAME}_TARGET} ${US_TEST_LINK_LIBRARIES} CppMicroServices)

if(_res_files OR US_TEST_LINK_LIBRARIES)
usFunctionAddResources(TARGET ${name} WORKING_DIRECTORY ${_res_root}
Expand Down
65 changes: 26 additions & 39 deletions cmake/usMacroCreateBundle.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ project(${_project_name})
cmake_parse_arguments(${PROJECT_NAME}
"SKIP_EXAMPLES;SKIP_INIT"
"VERSION;TARGET;SYMBOLIC_NAME"
"DEPENDS;INTERNAL_INCLUDE_DIRS;LINK_LIBRARIES;INTERNAL_LINK_LIBRARIES;SOURCES;PRIVATE_HEADERS;PUBLIC_HEADERS;RESOURCES;BINARY_RESOURCES"
"DEPENDS;PRIVATE_INCLUDE_DIRS;LINK_LIBRARIES;SOURCES;PRIVATE_HEADERS;PUBLIC_HEADERS;RESOURCES;BINARY_RESOURCES"
${ARGN}
)

Expand All @@ -32,7 +32,6 @@ if(WIN32 AND NOT CYGWIN)
set(PROJECT_OUTPUT_NAME "${PROJECT_OUTPUT_NAME}${${PROJECT_NAME}_VERSION_MAJOR}")
endif()


if(NOT ${PROJECT_NAME}_SYMBOLIC_NAME)
set(${PROJECT_NAME}_SYMBOLIC_NAME ${${PROJECT_NAME}_TARGET})
endif()
Expand All @@ -45,14 +44,9 @@ if(${PROJECT_NAME}_DEPENDS)
endif()

#-----------------------------------------------------------------------------
# Include dirs and libraries
# Configure files
#-----------------------------------------------------------------------------

set(${PROJECT_NAME}_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_BINARY_DIR}/include
)

set(${PROJECT_NAME}_INCLUDE_SUBDIR "cppmicroservices")
if(NOT ${PROJECT_NAME} STREQUAL "Framework")
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
Expand All @@ -71,24 +65,6 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}Config.h.in)
${CMAKE_CURRENT_BINARY_DIR}/include/${${PROJECT_NAME}_INCLUDE_SUBDIR}/${PROJECT_NAME}Config.h)
endif()

include_directories(
${US_INCLUDE_DIRS}
${${PROJECT_NAME}_INCLUDE_DIRS}
)

set(_internal_include_dirs ${${PROJECT_NAME}_INTERNAL_INCLUDE_DIRS})
set(${PROJECT_NAME}_INTERNAL_INCLUDE_DIRS )
if(_internal_include_dirs)
foreach(_internal_include_dir ${_internal_include_dirs})
if(IS_ABSOLUTE "${_internal_include_dir}")
list(APPEND ${PROJECT_NAME}_INTERNAL_INCLUDE_DIRS ${_internal_include_dir})
else()
list(APPEND ${PROJECT_NAME}_INTERNAL_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/${_internal_include_dir})
endif()
endforeach()
include_directories(${${PROJECT_NAME}_INTERNAL_INCLUDE_DIRS})
endif()

#-----------------------------------------------------------------------------
# Create library
#-----------------------------------------------------------------------------
Expand All @@ -107,8 +83,29 @@ add_library(${PROJECT_TARGET} ${${PROJECT_NAME}_SOURCES}
${${PROJECT_NAME}_PRIVATE_HEADERS} ${${PROJECT_NAME}_PUBLIC_HEADERS})
set_property(TARGET ${PROJECT_TARGET} PROPERTY OUTPUT_NAME ${PROJECT_OUTPUT_NAME})

target_link_libraries(${PROJECT_TARGET} PUBLIC ${US_LIBRARIES})

target_compile_features(${PROJECT_TARGET}
PUBLIC cxx_variadic_templates cxx_nullptr cxx_defaulted_functions cxx_deleted_functions
)

# Include directories
target_include_directories(${PROJECT_TARGET}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
$<INSTALL_INTERFACE:${HEADER_INSTALL_DIR}>
PRIVATE
${${PROJECT_NAME}_PRIVATE_INCLUDE_DIRS}
)

# Compile definitions
set_property(TARGET ${PROJECT_TARGET} APPEND PROPERTY COMPILE_DEFINITIONS US_BUNDLE_NAME=${${PROJECT_NAME}_SYMBOLIC_NAME})
target_compile_definitions(${PROJECT_TARGET}
PRIVATE US_BUNDLE_NAME=${${PROJECT_NAME}_SYMBOLIC_NAME}
)

# Convenience properties
set_property(TARGET ${PROJECT_TARGET} PROPERTY US_BUNDLE_NAME ${${PROJECT_NAME}_SYMBOLIC_NAME})

# Link flags
Expand All @@ -123,15 +120,8 @@ set_target_properties(${${PROJECT_NAME}_TARGET} PROPERTIES
)

# Link additional libraries
if(${PROJECT_NAME}_LINK_LIBRARIES OR ${PROJECT_NAME}_INTERNAL_LINK_LIBRARIES OR US_LIBRARIES)
target_link_libraries(${${PROJECT_NAME}_TARGET} ${US_LIBRARIES} ${${PROJECT_NAME}_LINK_LIBRARIES}
${${PROJECT_NAME}_INTERNAL_LINK_LIBRARIES})
endif()

if(${PROJECT_NAME}_INTERNAL_LINK_LIBRARIES)
set_target_properties(${${PROJECT_NAME}_TARGET} PROPERTIES
INTERFACE_LINK_LIBRARIES ${US_LIBRARIES} ${${PROJECT_NAME}_LINK_LIBRARIES}
)
if(${PROJECT_NAME}_LINK_LIBRARIES)
target_link_libraries(${${PROJECT_NAME}_TARGET} ${${PROJECT_NAME}_LINK_LIBRARIES})
endif()

# Embed bundle resources
Expand Down Expand Up @@ -207,9 +197,6 @@ endif()

# Configure config file for the build tree

set(PACKAGE_CONFIG_INCLUDE_DIR
${${PROJECT_NAME}_INCLUDE_DIRS}
${${PROJECT_NAME}_INTERNAL_INCLUDE_DIRS})
set(PACKAGE_CONFIG_RUNTIME_LIBRARY_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

configure_file(
Expand Down
7 changes: 2 additions & 5 deletions doc/src/examples/getting_started/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ find_package(CppMicroServices REQUIRED)

include(GenerateExportHeader)

include_directories(${CppMicroServices_INCLUDE_DIRS})

# [interface-begin]
#=========================================================
# A library providing the ServiceTime interface
Expand All @@ -21,9 +19,8 @@ add_library(ServiceTime
)

target_include_directories(ServiceTime PUBLIC
$<BUILD_INTERFACE:
${CMAKE_CURRENT_SOURCE_DIR}/service_time;
${CMAKE_CURRENT_BINARY_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/service_time>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
)

generate_export_header(ServiceTime)
Expand Down
2 changes: 1 addition & 1 deletion framework/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ usMacroCreateBundle(Framework
TARGET CppMicroServices
SYMBOLIC_NAME system_bundle
SKIP_INIT # we do it manually
INTERNAL_INCLUDE_DIRS src/util src/service src/bundle
PRIVATE_INCLUDE_DIRS src/util src/service src/bundle ../third_party
LINK_LIBRARIES ${_link_libraries}
SOURCES ${_framework_srcs}
PUBLIC_HEADERS ${_framework_public_headers}
Expand Down
2 changes: 0 additions & 2 deletions framework/doc/snippets/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@

include_directories(${US_INCLUDE_DIRS})

usFunctionCompileSnippets("${CMAKE_CURRENT_SOURCE_DIR}")

add_subdirectory(uServices-resources-cmake)
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
=============================================================================*/

#include "cppmicroservices/BundleActivator.h"
#include <cppmicroservices/BundleActivator.h>

#include <iostream>

Expand Down
2 changes: 2 additions & 0 deletions framework/doc/snippets/uServices-staticbundles/files.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ add_library(MyStaticBundle STATIC ${base_dir}/MyStaticBundle.cpp)
set_property(TARGET MyStaticBundle APPEND PROPERTY COMPILE_DEFINITIONS US_BUNDLE_NAME=MyStaticBundle)
set_property(TARGET MyStaticBundle PROPERTY US_BUNDLE_NAME MyStaticBundle)

target_link_libraries(MyStaticBundle PRIVATE CppMicroServices)

set(snippet_link_libraries
MyStaticBundle
)

0 comments on commit de2c4ad

Please sign in to comment.