-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New build options ----------------- * Add option BUILD_TESTING by default ON See https://cmake.org/cmake/help/v2.8.12/cmake.html#module:CTest * Simplify library type selection using standard option BUILD_SHARED_LIBS See https://cmake.org/cmake/help/v3.0/variable/BUILD_SHARED_LIBS.html yamlConfig.cmake ---------------- * Generate and install yamlConfig.cmake, yamlConfigVersion.cmake and yamlTargets.cmake * Bump CMake version and explicitly associate include dirs with targets See https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#include-directories-and-usage-requirements * Ensure building against libyaml using "find_package(yaml)" uses expected compile options: Set HAVE_CONFIG_H as private compile option, YAML_DECLARE_STATIC as public Testing ------- * Build all examples from "tests" directory CMake Best practices -------------------- * configure "config.h" based on version info found in CMakeLists.txt * Ensure buildsystem re-generation listing sources (best-practice) It is not recommended to use GLOB to collect a list of source files from the source tree. If no CMakeLists.txt file changes when a source is added or removed then the generated build system cannot know when to ask CMake to regenerate. See https://cmake.org/cmake/help/v3.8/command/file.html Compilation warnings -------------------- * Set _CRT_SECURE_NO_WARNINGS if building using VisualStudio This will avoid warnings like this one: ``` C:\projects\libyaml\tests\run-emitter.c(268): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. ``` Continuous Integration ---------------------- * travis: Install CMake >= 3.x using scikit-ci-addons * Add comments to appveyor.yml and run-tests.sh
- Loading branch information
1 parent
660242d
commit fe3d086
Showing
12 changed files
with
224 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,20 @@ | ||
os: | ||
- linux | ||
- osx | ||
|
||
matrix: | ||
include: | ||
- os: linux | ||
sudo: required | ||
compiler: gcc | ||
- os: linux | ||
sudo: required | ||
compiler: clang | ||
- os: osx | ||
compiler: gcc | ||
- os: osx | ||
compiler: clang | ||
|
||
language: c | ||
|
||
compiler: | ||
- clang | ||
- gcc | ||
before_install: | ||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then pip install --user scikit-ci-addons==0.15.0; ci_addons travis/install_cmake 3.2.0; fi | ||
|
||
script: tests/run-tests.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,160 @@ | ||
# Minimal CMake project for building a static library under Windows. | ||
|
||
cmake_minimum_required (VERSION 2.8) | ||
cmake_minimum_required(VERSION 3.0) | ||
project (yaml C) | ||
|
||
set (YAML_VERSION_MAJOR 0) | ||
set (YAML_VERSION_MINOR 1) | ||
set (YAML_VERSION_PATCH 7) | ||
set (YAML_VERSION_STRING "${YAML_VERSION_MAJOR}.${YAML_VERSION_MINOR}.${YAML_VERSION_PATCH}") | ||
|
||
file (GLOB SRC src/*.c) | ||
option(BUILD_SHARED_LIBS "Build libyaml as a shared library" OFF) | ||
|
||
include_directories (include win32) | ||
add_library (yaml SHARED ${SRC}) | ||
set_target_properties(yaml PROPERTIES COMPILE_FLAGS "-DYAML_DECLARE_EXPORT -DHAVE_CONFIG_H") | ||
# | ||
# Output directories for a build tree | ||
# | ||
if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
endif() | ||
|
||
add_library (yaml_static STATIC ${SRC}) | ||
set_target_properties(yaml_static PROPERTIES COMPILE_FLAGS "-DYAML_DECLARE_STATIC -DHAVE_CONFIG_H") | ||
# | ||
# Install relative directories | ||
# | ||
if(NOT DEFINED INSTALL_LIB_DIR) | ||
set(INSTALL_LIB_DIR lib) | ||
endif() | ||
if(NOT DEFINED INSTALL_BIN_DIR) | ||
set(INSTALL_BIN_DIR bin) | ||
endif() | ||
if(NOT DEFINED INSTALL_INCLUDE_DIR) | ||
set(INSTALL_INCLUDE_DIR include) | ||
endif() | ||
if(NOT DEFINED INSTALL_CMAKE_DIR) | ||
set(INSTALL_CMAKE_DIR cmake) | ||
endif() | ||
|
||
add_executable (test-version tests/test-version.c) | ||
target_link_libraries(test-version yaml) | ||
add_test(NAME version COMMAND test-version) | ||
# | ||
# Build library | ||
# | ||
set(SRCS | ||
src/api.c | ||
src/dumper.c | ||
src/emitter.c | ||
src/loader.c | ||
src/parser.c | ||
src/reader.c | ||
src/scanner.c | ||
src/writer.c | ||
) | ||
|
||
add_executable (test-reader tests/test-reader.c) | ||
target_link_libraries(test-reader yaml) | ||
add_test(NAME reader COMMAND test-reader) | ||
set(config_h ${CMAKE_CURRENT_BINARY_DIR}/include/config.h) | ||
configure_file( | ||
cmake/config.h.in | ||
${config_h} | ||
) | ||
|
||
enable_testing() | ||
add_library(yaml ${SRCS}) | ||
|
||
if(NOT BUILD_SHARED_LIBS) | ||
set_target_properties(yaml | ||
PROPERTIES OUTPUT_NAME yaml_static | ||
) | ||
endif() | ||
|
||
set_target_properties(yaml | ||
PROPERTIES DEFINE_SYMBOL YAML_DECLARE_EXPORT | ||
) | ||
|
||
target_compile_definitions(yaml | ||
PRIVATE HAVE_CONFIG_H | ||
PUBLIC | ||
$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:YAML_DECLARE_STATIC> | ||
$<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS> | ||
) | ||
|
||
target_include_directories(yaml PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include> | ||
$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}> | ||
) | ||
|
||
# | ||
# Install rules | ||
# | ||
install( | ||
FILES | ||
include/yaml.h | ||
${config_h} | ||
DESTINATION include COMPONENT Development | ||
) | ||
|
||
install( | ||
TARGETS yaml | ||
EXPORT yamlTargets | ||
RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT Runtime | ||
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT Development | ||
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT Development | ||
) | ||
|
||
# | ||
# Add tests | ||
# | ||
include(CTest) # This module defines BUILD_TESTING option | ||
if(BUILD_TESTING) | ||
add_subdirectory(tests) | ||
endif() | ||
|
||
# | ||
# Generate 'yamlConfig.cmake', 'yamlConfigVersion.cmake' and 'yamlTargets.cmake' | ||
# | ||
include(CMakePackageConfigHelpers) | ||
|
||
# Configure 'yamlConfig.cmake' for a build tree | ||
set(CONFIG_DIR_CONFIG ${PROJECT_BINARY_DIR}) | ||
set(config_file ${PROJECT_BINARY_DIR}/yamlConfig.cmake) | ||
configure_package_config_file( | ||
yamlConfig.cmake.in | ||
${config_file} | ||
INSTALL_DESTINATION ${PROJECT_BINARY_DIR} | ||
PATH_VARS CONFIG_DIR_CONFIG | ||
NO_CHECK_REQUIRED_COMPONENTS_MACRO | ||
) | ||
|
||
# Configure 'yamlTargets.cmake' for a build tree | ||
export(TARGETS yaml | ||
FILE ${PROJECT_BINARY_DIR}/yamlTargets.cmake | ||
) | ||
|
||
# Configure and install 'yamlConfig.cmake' for an install tree | ||
set(CONFIG_DIR_CONFIG ${INSTALL_CMAKE_DIR}) | ||
set(install_config_file ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yamlConfig.cmake ) | ||
configure_package_config_file( | ||
yamlConfig.cmake.in | ||
${install_config_file} | ||
INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR} | ||
PATH_VARS CONFIG_DIR_CONFIG | ||
NO_CHECK_REQUIRED_COMPONENTS_MACRO | ||
) | ||
install( | ||
FILES ${install_config_file} | ||
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Development | ||
) | ||
|
||
# Configure and install 'yamlTargets.cmake' for an install tree | ||
install(EXPORT yamlTargets | ||
FILE yamlTargets.cmake | ||
DESTINATION ${INSTALL_CMAKE_DIR} | ||
COMPONENT Development | ||
) | ||
|
||
# Configure 'yamlConfigVersion.cmake' for a build tree | ||
set(config_version_file ${PROJECT_BINARY_DIR}/yamlConfigVersion.cmake) | ||
write_basic_package_version_file( | ||
${config_version_file} | ||
VERSION ${YAML_VERSION_STRING} | ||
COMPATIBILITY AnyNewerVersion | ||
) | ||
# ... and install for an install tree | ||
install( | ||
FILES ${config_version_file} | ||
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Development | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#define YAML_VERSION_MAJOR @YAML_VERSION_MAJOR@ | ||
#define YAML_VERSION_MINOR @YAML_VERSION_MINOR@ | ||
#define YAML_VERSION_PATCH @YAML_VERSION_PATCH@ | ||
#define YAML_VERSION_STRING "@YAML_VERSION_STRING@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
|
||
function(add_yaml_executable name) | ||
add_executable(${name} ${name}.c) | ||
target_link_libraries(${name} yaml) | ||
endfunction() | ||
|
||
foreach(name IN ITEMS | ||
example-deconstructor | ||
example-deconstructor-alt | ||
example-reformatter | ||
example-reformatter-alt | ||
run-dumper | ||
run-emitter | ||
run-loader | ||
run-parser | ||
run-scanner | ||
test-reader | ||
test-version | ||
) | ||
add_yaml_executable(${name}) | ||
endforeach() | ||
|
||
add_test(NAME version COMMAND test-version) | ||
add_test(NAME reader COMMAND test-reader) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Config file for the yaml library. | ||
# | ||
# It defines the following variables: | ||
# yaml_LIBRARIES - libraries to link against | ||
|
||
@PACKAGE_INIT@ | ||
|
||
set_and_check(yaml_TARGETS "@PACKAGE_CONFIG_DIR_CONFIG@/yamlTargets.cmake") | ||
|
||
if(NOT yaml_TARGETS_IMPORTED) | ||
set(yaml_TARGETS_IMPORTED 1) | ||
include(${yaml_TARGETS}) | ||
endif() | ||
|
||
set(yaml_LIBRARIES yaml) | ||
|