Permalink
Browse files

[cmake] Add FindUtfcpp.cmake

it will look for utfcpp in the standard system paths, UTFCPP_PATH,
and lib/utfcpp/v2_0/source.

This allows the use of utfcpp in:

  * standard locations such as /usr/include on distributions shipping
  utfcpp

  * custom locations for users via UTFCPP_PATH

  * the source tree using the default location of the utfcpp
    git submodule, .i.e lib/utfcpp/v2_0

Signed-off-by: Alexis Hildebrandt <afh@surryhill.net>
  • Loading branch information...
afh committed Jan 11, 2015
1 parent cc0b32d commit 1d7dd3e082be8a046f21d4a2d51026ac3c1f7c14
Showing with 43 additions and 3 deletions.
  1. +13 −3 CMakeLists.txt
  2. +30 −0 cmake/FindUtfcpp.cmake
@@ -11,6 +11,9 @@ set(Ledger_VERSION_MINOR 1)
set(Ledger_VERSION_PATCH 0)
set(Ledger_VERSION_DATE 20141005)
# Point CMake at any custom modules we may ship
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
enable_testing()
add_definitions(-std=c++11)
@@ -236,13 +239,20 @@ endmacro(add_ledger_library_dependencies _target)
########################################################################
include(FindUtfcpp)
if (UTFCPP_FOUND)
include_directories("${UTFCPP_INCLUDE_DIR}")
else()
message(FATAL_ERROR "Missing required header file: utf8.h\n"
"Define UTFCPP_PATH or install utfcpp locally into the source tree below lib/utfcpp/."
)
endif()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
# add the binary tree to the search path for include files so that we will
# find TutorialConfig.h
include_directories("${PROJECT_SOURCE_DIR}/lib")
include_directories("${PROJECT_SOURCE_DIR}/lib/utfcpp/v2_0/source")
# find system.hh
include_directories("${PROJECT_BINARY_DIR}")
configure_file(
@@ -0,0 +1,30 @@
# - Try to find utfcpp
# Once done, this will define
#
# UTFCPP_FOUND - system has utfcpp's utf8.h
# UTFCPP_PATH - the utfcpp include directories
include(CheckCXXSourceCompiles)
set(UTFCPP_FOUND FALSE)
find_path(UTFCPP_INCLUDE_DIR
NAMES utf8.h
HINTS "${UTFCPP_PATH}" "${PROJECT_SOURCE_DIR}/lib/utfcpp/v2_0/source"
)
if (UTFCPP_INCLUDE_DIR)
set(CMAKE_REQUIRED_INCLUDES "${UTFCPP_INCLUDE_DIR}")
set(UTFCPP_FOUND TRUE)
endif()
check_cxx_source_compiles("
#include <string>
#include \"utf8.h\"
int main(int argc, char** argv) {
std::string input = std::string(\"utfcpp\");
const char * p = input.c_str();
std::size_t len = input.length();
utf8::is_valid(p, p + len);
}" HAVE_WORKING_UTFCPP)

0 comments on commit 1d7dd3e

Please sign in to comment.