added makefiles
authorIvan Hernanez <iturtleman128@gmail.com>
Tue, 29 May 2012 04:19:55 +0000 (23:19 -0500)
committerIvan Hernanez <iturtleman128@gmail.com>
Tue, 29 May 2012 04:19:55 +0000 (23:19 -0500)
yaml-cpp/CMakeLists.txt [new file with mode: 0644]
yaml-cpp/util/CMakeLists.txt [new file with mode: 0644]

diff --git a/yaml-cpp/CMakeLists.txt b/yaml-cpp/CMakeLists.txt
new file mode 100644 (file)
index 0000000..823ce20
--- /dev/null
@@ -0,0 +1,282 @@
+###
+### CMake settings
+###
+## Due to Mac OSX we need to keep compatibility with CMake 2.6
+# see http://www.cmake.org/Wiki/CMake_Policies
+cmake_minimum_required(VERSION 2.6)
+# see http://www.cmake.org/cmake/help/cmake-2-8-docs.html#policy:CMP0012
+if(POLICY CMP0012)
+       cmake_policy(SET CMP0012 OLD)
+endif()
+# see http://www.cmake.org/cmake/help/cmake-2-8-docs.html#policy:CMP0015
+if(POLICY CMP0015)
+       cmake_policy(SET CMP0015 OLD)
+endif()
+
+include(CheckCXXCompilerFlag)
+
+
+###
+### Project settings
+###
+project(YAML_CPP)
+
+set(YAML_CPP_VERSION_MAJOR "0")
+set(YAML_CPP_VERSION_MINOR "3")
+set(YAML_CPP_VERSION_PATCH "0")
+set(YAML_CPP_VERSION "${YAML_CPP_VERSION_MAJOR}.${YAML_CPP_VERSION_MINOR}.${YAML_CPP_VERSION_PATCH}")
+
+enable_testing()
+
+
+###
+### Project options
+###
+## Project stuff
+option(YAML_CPP_BUILD_TOOLS "Enable testing and parse tools" ON)
+option(YAML_CPP_BUILD_CONTRIB "Enable contrib stuff in library" ON)
+
+## Build options
+# --> General
+# see http://www.cmake.org/cmake/help/cmake2.6docs.html#variable:BUILD_SHARED_LIBS
+#     http://www.cmake.org/cmake/help/cmake2.6docs.html#command:add_library
+option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
+
+# --> Apple
+option(APPLE_UNIVERSAL_BIN "Apple: Build universal binary" OFF)
+
+# --> Microsoft Visual C++
+# see http://msdn.microsoft.com/en-us/library/aa278396(v=VS.60).aspx
+#     http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=VS.71).aspx
+option(MSVC_SHARED_RT "MSVC: Build with shared runtime libs (/MD)" ON)
+option(MSVC_STHREADED_RT "MSVC: Build with single-threaded static runtime libs (/ML until VS .NET 2003)" OFF)
+
+###
+### Sources, headers, directories and libs
+###
+set(header_directory "include/yaml-cpp/")
+
+file(GLOB sources "src/[a-zA-Z]*.cpp")
+file(GLOB public_headers "include/yaml-cpp/[a-zA-Z]*.h")
+file(GLOB private_headers "src/[a-zA-Z]*.h")
+
+if(YAML_CPP_BUILD_CONTRIB)
+       file(GLOB contrib_sources "src/contrib/[a-zA-Z]*.cpp")
+       file(GLOB contrib_public_headers "include/yaml-cpp/contrib/[a-zA-Z]*.h")
+       file(GLOB contrib_private_headers "src/contrib/[a-zA-Z]*.h")
+else()
+       add_definitions(-DYAML_CPP_NO_CONTRIB)
+endif()
+
+if(VERBOSE)
+       message(STATUS "sources: ${sources}")
+       message(STATUS "public_headers: ${public_headers}")
+       message(STATUS "private_headers: ${private_headers}")
+       message(STATUS "contrib_sources: ${contrib_sources}")
+       message(STATUS "contrib_public_headers: ${contrib_public_headers}")
+       message(STATUS "contrib_private_headers: ${contrib_private_headers}")
+endif()
+
+include_directories(${YAML_CPP_SOURCE_DIR}/include)
+include_directories(${YAML_CPP_SOURCE_DIR}/src)
+
+
+###
+### General compilation settings
+###
+if(BUILD_SHARED_LIBS)
+       set(LABEL_SUFFIX "shared")
+else()
+       set(LABEL_SUFFIX "static")
+endif()
+
+if(APPLE)
+       if(APPLE_UNIVERSAL_BIN)
+               set(CMAKE_OSX_ARCHITECTURES ppc;i386)
+       endif()
+endif()
+
+if(IPHONE)
+       set(CMAKE_OSX_SYSROOT "iphoneos4.2")
+       set(CMAKE_OSX_ARCHITECTURES "armv6;armv7")
+endif()
+
+if(WIN32)
+       if(BUILD_SHARED_LIBS)
+               add_definitions(-D${PROJECT_NAME}_DLL)  # use or build Windows DLL
+       endif()
+       if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+               set(CMAKE_INSTALL_PREFIX "C:/")
+       endif()
+endif()
+
+# GCC specialities
+if(CMAKE_COMPILER_IS_GNUCXX)
+       ### General stuff
+       if(WIN32)
+               set(CMAKE_SHARED_LIBRARY_PREFIX "")     # DLLs do not have a "lib" prefix
+               set(CMAKE_IMPORT_LIBRARY_PREFIX "")     # same for DLL import libs
+               set(CMAKE_LINK_DEF_FILE_FLAG "")        # CMake workaround (2.8.3)
+       endif()
+
+       ### Project stuff
+       if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
+               set(CMAKE_BUILD_TYPE Release)
+       endif()
+       #
+       set(CMAKE_CXX_FLAGS_RELEASE "-O2")
+       set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+       set(CMAKE_CXX_FLAGS_DEBUG "-g")
+       set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os")
+       #
+       set(GCC_EXTRA_OPTIONS "")
+       #
+       set(FLAG_TESTED "-Wextra")
+       check_cxx_compiler_flag(${FLAG_TESTED} FLAG_WEXTRA)
+       if(FLAG_WEXTRA)
+               set(GCC_EXTRA_OPTIONS "${GCC_EXTRA_OPTIONS} ${FLAG_TESTED}")
+       endif()
+       #
+       set(CMAKE_CXX_FLAGS "-Wall ${GCC_EXTRA_OPTIONS} -pedantic -Wno-long-long ${CMAKE_CXX_FLAGS}")
+       #
+       add_custom_target(debuggable $(MAKE) clean
+               COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
+               COMMENT "Adjusting settings for debug compilation"
+               VERBATIM)
+       add_custom_target(releasable $(MAKE) clean
+               COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
+               COMMENT "Adjusting settings for release compilation"
+               VERBATIM)
+endif()
+
+# Microsoft VisualC++ specialities
+if(MSVC)
+       ### General stuff
+       # a) Change MSVC runtime library settings (/MD[d], /MT[d], /ML[d] (single-threaded until VS 2003))
+       #    plus set lib suffix for later use and project label accordingly
+       # see http://msdn.microsoft.com/en-us/library/aa278396(v=VS.60).aspx
+       #     http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=VS.71).aspx
+       set(LIB_RT_SUFFIX "md") # CMake defaults to /MD for MSVC
+       set(LIB_RT_OPTION "/MD")
+       #
+       if(NOT MSVC_SHARED_RT)  # User wants to have static runtime libraries (/MT, /ML)
+               if(MSVC_STHREADED_RT)   # User wants to have old single-threaded static runtime libraries
+                       set(LIB_RT_SUFFIX "ml")
+                       set(LIB_RT_OPTION "/ML")
+                       if(NOT ${MSVC_VERSION} LESS 1400)
+                               message(FATAL_ERROR "Single-threaded static runtime libraries (/ML) only available until VS .NET 2003 (7.1).")
+                       endif()
+               else()
+                       set(LIB_RT_SUFFIX "mt")
+                       set(LIB_RT_OPTION "/MT")
+               endif()
+
+               # correct linker options
+               foreach(flag_var  CMAKE_C_FLAGS  CMAKE_CXX_FLAGS)
+                       foreach(config_name  ""  DEBUG  RELEASE  MINSIZEREL  RELWITHDEBINFO)
+                               set(var_name "${flag_var}")
+                               if(NOT "${config_name}" STREQUAL "")
+                                       set(var_name "${var_name}_${config_name}")
+                               endif()
+                               string(REPLACE "/MD" "${LIB_RT_OPTION}" ${var_name} "${${var_name}}")
+                       endforeach()
+               endforeach()
+       endif()
+       #
+       set(LABEL_SUFFIX "${LABEL_SUFFIX} ${LIB_RT_SUFFIX}")
+
+       # b) Change prefix for static libraries
+       set(CMAKE_STATIC_LIBRARY_PREFIX "lib")  # to distinguish static libraries from DLL import libs
+
+       # c) Correct suffixes for static libraries
+       if(NOT BUILD_SHARED_LIBS)
+               ### General stuff
+               set(LIB_TARGET_SUFFIX "${LIB_SUFFIX}${LIB_RT_SUFFIX}")
+       endif()
+
+       ### Project stuff
+       # /W3 = set warning level; see http://msdn.microsoft.com/en-us/library/thxezb7y.aspx
+       # /wd4127 = disable warning C4127 "conditional expression is constant"; see http://msdn.microsoft.com/en-us/library/6t66728h.aspx
+       # /wd4355 = disable warning C4355 "'this' : used in base member initializer list"; http://msdn.microsoft.com/en-us/library/3c594ae3.aspx
+       set(CMAKE_CXX_FLAGS "/W3 /wd4127 /wd4355 /D_SCL_SECURE_NO_WARNINGS ${CMAKE_CXX_FLAGS}")
+endif()
+
+
+###
+### General install settings
+###
+if(WIN32)
+       set(_library_dir bin)   # .dll are in PATH, like executables
+else()
+       set(_library_dir lib)
+endif()
+
+set(INCLUDE_INSTALL_ROOT_DIR include)
+
+set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_ROOT_DIR}/yaml-cpp)
+set(LIB_INSTALL_DIR "${_library_dir}${LIB_SUFFIX}")
+
+set(_INSTALL_DESTINATIONS
+       RUNTIME DESTINATION bin
+       LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+       ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
+)
+
+
+###
+### Library
+###
+add_library(yaml-cpp
+       ${sources}
+       ${public_headers}
+       ${private_headers}
+       ${contrib_sources}
+       ${contrib_public_headers}
+       ${contrib_private_headers}
+)
+
+set_target_properties(yaml-cpp PROPERTIES
+       VERSION "${YAML_CPP_VERSION}"
+       SOVERSION "${YAML_CPP_VERSION_MAJOR}.${YAML_CPP_VERSION_MINOR}"
+       PROJECT_LABEL "yaml-cpp ${LABEL_SUFFIX}"
+)
+
+if(IPHONE)
+       set_target_properties(yaml-cpp PROPERTIES
+               XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "3.0"
+       )
+endif()
+
+if(MSVC)
+       if(NOT BUILD_SHARED_LIBS)
+               # correct library names
+               set_target_properties(yaml-cpp PROPERTIES
+                       DEBUG_POSTFIX "${LIB_TARGET_SUFFIX}d"
+                       RELEASE_POSTFIX "${LIB_TARGET_SUFFIX}"
+                       MINSIZEREL_POSTFIX "${LIB_TARGET_SUFFIX}"
+                       RELWITHDEBINFO_POSTFIX "${LIB_TARGET_SUFFIX}"
+               )
+       endif()
+endif()
+
+install(TARGETS yaml-cpp ${_INSTALL_DESTINATIONS})
+install(
+       DIRECTORY ${header_directory}
+       DESTINATION ${INCLUDE_INSTALL_DIR}
+       FILES_MATCHING PATTERN "*.h"
+)
+
+if(UNIX)
+       set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc)
+       configure_file("yaml-cpp.pc.cmake" ${PC_FILE} @ONLY)
+       install(FILES ${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+endif()
+
+
+###
+### Extras
+###
+if(YAML_CPP_BUILD_TOOLS)
+       add_subdirectory(test)
+       add_subdirectory(util)
+endif()
diff --git a/yaml-cpp/util/CMakeLists.txt b/yaml-cpp/util/CMakeLists.txt
new file mode 100644 (file)
index 0000000..22339f0
--- /dev/null
@@ -0,0 +1,2 @@
+add_executable(parse parse.cpp)
+target_link_libraries(parse yaml-cpp)