Skip to content

Commit

Permalink
Merge pull request #657 from apiaryio/tjanc/cmake-targets
Browse files Browse the repository at this point in the history
Initial CMake configuration
  • Loading branch information
tjanc authored Nov 1, 2018
2 parents 3b79d8e + 98c87d3 commit 6f0ab40
Show file tree
Hide file tree
Showing 54 changed files with 731 additions and 84 deletions.
49 changes: 49 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)

message(STATUS "Testing dependencies ${BUILD_TESTING_DEPENDENCIES}.")

set(CMAKE_PREFIX_PATH "/prefix")
set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE)
set(as_subproject
markdown-parser
snowcrash
Sundown
cmdline
Drafter
Catch2
dtl
BoostContainer)

macro(find_package)
if(NOT "${ARGV0}" IN_LIST as_subproject)
_find_package(${ARGV})
endif()
endmacro()

# add external dependencies living in `ext`
add_subdirectory(ext/snowcrash/ext/markdown-parser/ext/sundown EXCLUDE_FROM_ALL)
add_subdirectory(ext/cmdline EXCLUDE_FROM_ALL)
add_subdirectory(ext/boost_1_66_0 EXCLUDE_FROM_ALL)

message(STATUS "Setting up tests for production...")
set(BUILD_TESTING ON)
add_subdirectory(test/vendor/Catch EXCLUDE_FROM_ALL)
add_subdirectory(test/vendor/dtl EXCLUDE_FROM_ALL)
include(CTest)
include(test/vendor/Catch/contrib/Catch.cmake)
enable_testing()

# targets developed in this super project
add_subdirectory(ext/snowcrash/ext/markdown-parser EXCLUDE_FROM_ALL)
add_subdirectory(ext/snowcrash EXCLUDE_FROM_ALL)

# drafter
add_subdirectory(src)
if(${BUILD_TESTING})
add_subdirectory(test)
add_custom_target(drafter-test-suite ALL)
add_dependencies(drafter-test-suite drafter-test markdown-parser-test snowcrash-test)
endif()



6 changes: 3 additions & 3 deletions drafter.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
'target_name': 'test-libmarkdownparser',
'type': 'executable',
'include_dirs': [
'test/vendor/Catch/include',
'test/vendor/Catch/single_include',
],
'sources': [
'ext/snowcrash/ext/markdown-parser/test/test-ByteBuffer.cc',
Expand Down Expand Up @@ -165,7 +165,7 @@
'target_name': 'test-libsnowcrash',
'type': 'executable',
'include_dirs': [
'test/vendor/Catch/include',
'test/vendor/Catch/single_include',
],
'sources': [
'ext/snowcrash/test/test-ActionParser.cc',
Expand Down Expand Up @@ -361,7 +361,7 @@
'target_name': 'test-libdrafter',
'type': 'executable',
'include_dirs': [
'test/vendor/Catch/include',
'test/vendor/Catch/single_include',
'test/vendor/dtl/dtl',
'src/refract',
],
Expand Down
2 changes: 2 additions & 0 deletions ext/boost_1_66_0/BoostContainerConfig.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
include(CMakeFindDependencyMacro)
include("${CMAKE_CURRENT_LIST_DIR}/BoostContainerTargets.cmake")
38 changes: 38 additions & 0 deletions ext/boost_1_66_0/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

project(BoostContainer VERSION 1.66 LANGUAGES CXX)

add_library(container INTERFACE)

target_include_directories(container INTERFACE
$<BUILD_INTERFACE:${BoostContainer_BINARY_DIR}>
$<BUILD_INTERFACE:${BoostContainer_SOURCE_DIR}>
$<INSTALL_INTERFACE:>
)

target_link_libraries(container INTERFACE)

install(EXPORT container-targets
FILE BoostContainerTargets.cmake
NAMESPACE Boost::
DESTINATION lib/cmake/boost
)

install(TARGETS container EXPORT container-targets
INCLUDES DESTINATION include
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file("BoostContainerConfigVersion.cmake"
VERSION ${BoostContainer_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
FILES
"BoostContainerConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/BoostContainerConfigVersion.cmake"
DESTINATION
lib/cmake/boost
)

add_library(Boost::container ALIAS container)
2 changes: 1 addition & 1 deletion ext/cmdline
93 changes: 93 additions & 0 deletions ext/snowcrash/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)

project(snowcrash VERSION 0.1 LANGUAGES CXX)

set(snowcrash_SOURCES
src/Blueprint.cc
src/BlueprintSourcemap.cc
src/HeadersParser.cc
src/HTTP.cc
src/MSON.cc
src/MSONOneOfParser.cc
src/MSONSourcemap.cc
src/MSONTypeSectionParser.cc
src/MSONValueMemberParser.cc
src/Section.cc
src/Signature.cc
src/snowcrash.cc
src/UriTemplateParser.cc
)

if(MSVC)
set(snowcrash_SOURCES ${snowcrash_SOURCES} src/win/RegexMatch.cc)
else()
set(snowcrash_SOURCES ${snowcrash_SOURCES} src/posix/RegexMatch.cc)
endif()

add_library(snowcrash SHARED ${snowcrash_SOURCES})
add_library(snowcrash-static STATIC ${snowcrash_SOURCES})
add_library(snowcrash-pic STATIC ${snowcrash_SOURCES})
set_property(TARGET snowcrash-pic PROPERTY POSITION_INDEPENDENT_CODE 1)

if(UNIX)
set_target_properties(snowcrash-static PROPERTIES OUTPUT_NAME snowcrash)
endif()

find_package(markdown-parser 1.0 REQUIRED)

target_link_libraries(snowcrash PUBLIC markdown-parser::markdown-parser-pic)
target_link_libraries(snowcrash-static PUBLIC markdown-parser::markdown-parser-static)
target_link_libraries(snowcrash-pic PUBLIC markdown-parser::markdown-parser-pic)

target_include_directories(snowcrash PUBLIC
$<BUILD_INTERFACE:${snowcrash_BINARY_DIR}/src>
$<BUILD_INTERFACE:${snowcrash_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:src>
)

target_include_directories(snowcrash-static PUBLIC
$<BUILD_INTERFACE:${snowcrash_BINARY_DIR}/src>
$<BUILD_INTERFACE:${snowcrash_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:src>
)

target_include_directories(snowcrash-pic PUBLIC
$<BUILD_INTERFACE:${snowcrash_BINARY_DIR}/src>
$<BUILD_INTERFACE:${snowcrash_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:src>
)

install(TARGETS snowcrash snowcrash-static snowcrash-pic EXPORT snowcrash-targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)

install(EXPORT snowcrash-targets
FILE snowcrash-targets.cmake
NAMESPACE snowcrash::
DESTINATION lib/cmake/snowcrash
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file("snowcrash-config-version.cmake"
VERSION ${snowcrash_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
FILES
"snowcrash-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/snowcrash-config-version.cmake"
DESTINATION
lib/cmake/snowcrash
)

add_library(snowcrash::snowcrash ALIAS snowcrash)
add_library(snowcrash::snowcrash-static ALIAS snowcrash-static)
add_library(snowcrash::snowcrash-pic ALIAS snowcrash-pic)


if(BUILD_TESTING)
include(snowcrash-tests.cmake)
endif()
126 changes: 126 additions & 0 deletions ext/snowcrash/ext/markdown-parser/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)

project(markdown-parser VERSION 0.1 LANGUAGES CXX)

set(MARKDOWN_PARSER_SOURCES
src/ByteBuffer.cc
src/MarkdownNode.cc
src/MarkdownParser.cc
)

set(MARKDOWN_PARSER_COMPILE_FEATURES
cxx_alias_templates
cxx_alignas
cxx_alignof
cxx_attribute_deprecated
cxx_auto_type
cxx_constexpr
cxx_contextual_conversions
cxx_decltype
cxx_decltype_auto
cxx_defaulted_functions
cxx_defaulted_move_initializers
cxx_delegating_constructors
cxx_deleted_functions
cxx_digit_separators
cxx_explicit_conversions
cxx_final
cxx_generalized_initializers
cxx_generic_lambdas
cxx_inheriting_constructors
cxx_lambdas
cxx_lambda_init_captures
cxx_noexcept
cxx_nonstatic_member_init
cxx_nullptr
cxx_override
cxx_range_for
cxx_raw_string_literals
cxx_return_type_deduction
cxx_rvalue_references
cxx_sizeof_member
cxx_static_assert
cxx_strong_enums
cxx_thread_local
cxx_trailing_return_types
cxx_unicode_literals
cxx_uniform_initialization
cxx_unrestricted_unions
cxx_user_literals
cxx_variable_templates
cxx_variadic_macros
cxx_variadic_templates
cxx_template_template_parameters
)

add_library(markdown-parser SHARED ${MARKDOWN_PARSER_SOURCES})
add_library(markdown-parser-static STATIC ${MARKDOWN_PARSER_SOURCES})
add_library(markdown-parser-pic STATIC ${MARKDOWN_PARSER_SOURCES})
set_property(TARGET markdown-parser-pic PROPERTY POSITION_INDEPENDENT_CODE 1)

if(UNIX)
set_target_properties(markdown-parser-static PROPERTIES OUTPUT_NAME markdown-parser)
endif()

find_package(Sundown 1.0 REQUIRED)

target_link_libraries(markdown-parser PUBLIC Apiary::sundown-pic)
target_link_libraries(markdown-parser-static PUBLIC Apiary::sundown-static)
target_link_libraries(markdown-parser-pic PUBLIC Apiary::sundown-pic)

target_include_directories(markdown-parser PUBLIC
$<BUILD_INTERFACE:${markdown-parser_BINARY_DIR}/src>
$<BUILD_INTERFACE:${markdown-parser_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:src>
)

target_include_directories(markdown-parser-static PUBLIC
$<BUILD_INTERFACE:${markdown-parser_BINARY_DIR}/src>
$<BUILD_INTERFACE:${markdown-parser_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:src>
)

target_include_directories(markdown-parser-pic PUBLIC
$<BUILD_INTERFACE:${markdown-parser_BINARY_DIR}/src>
$<BUILD_INTERFACE:${markdown-parser_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:src>
)

target_compile_features(markdown-parser PUBLIC ${MARKDOWN_PARSER_COMPILE_FEATURES})
target_compile_features(markdown-parser-static PUBLIC ${MARKDOWN_PARSER_COMPILE_FEATURES})
target_compile_features(markdown-parser-pic PUBLIC ${MARKDOWN_PARSER_COMPILE_FEATURES})

install(TARGETS markdown-parser markdown-parser-static markdown-parser-pic EXPORT markdown-parser-targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)

install(EXPORT markdown-parser-targets
FILE markdown-parser-targets.cmake
NAMESPACE markdown-parser::
DESTINATION lib/cmake/markdown-parser
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file("markdown-parser-config-version.cmake"
VERSION ${markdown-parser_VERSION}
COMPATIBILITY SameMajorVersion
)

install(
FILES
"markdown-parser-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/markdown-parser-config-version.cmake"
DESTINATION
lib/cmake/markdown-parser
)

add_library(markdown-parser::markdown-parser ALIAS markdown-parser)
add_library(markdown-parser::markdown-parser-static ALIAS markdown-parser-static)
add_library(markdown-parser::markdown-parser-pic ALIAS markdown-parser-pic)

if(BUILD_TESTING)
include(markdown-parser-tests.cmake)
endif()
2 changes: 1 addition & 1 deletion ext/snowcrash/ext/markdown-parser/ext/sundown
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include(CMakeFindDependencyMacro)
find_dependency(Sundown 1.0)
include("${CMAKE_CURRENT_LIST_DIR}/markdown-parser-targets.cmake")
18 changes: 18 additions & 0 deletions ext/snowcrash/ext/markdown-parser/markdown-parser-tests.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)

find_package(Catch2 1.0 REQUIRED)

add_executable(markdown-parser-test
test/test-ByteBuffer.cc
test/test-libmarkdownparser.cc
test/test-MarkdownParser.cc
)

add_test(MardownParserTest markdown-parser-test)

target_link_libraries(markdown-parser-test
PRIVATE
Catch2::Catch2
markdown-parser::markdown-parser-static
)

2 changes: 1 addition & 1 deletion ext/snowcrash/ext/markdown-parser/test/test-ByteBuffer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// Copyright (c) 2014 Apiary Inc. All rights reserved.
//

#include "catch.hpp"
#include <catch2/catch.hpp>
#include "MarkdownParser.h"

using namespace mdp;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// Copyright (c) 2014 Apiary Inc. All rights reserved.
//

#include "catch.hpp"
#include <catch2/catch.hpp>
#include "MarkdownParser.h"

using namespace mdp;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
//

#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include <catch2/catch.hpp>
3 changes: 3 additions & 0 deletions ext/snowcrash/snowcrash-config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include(CMakeFindDependencyMacro)
find_dependency(markdown-parser 1.0)
include("${CMAKE_CURRENT_LIST_DIR}/snowcrash-targets.cmake")
Loading

0 comments on commit 6f0ab40

Please sign in to comment.