CMakeLists.txt revision 268896
1PROJECT(libucl C) 2 3SET(LIBUCL_VERSION_MAJOR 0) 4SET(LIBUCL_VERSION_MINOR 2) 5SET(LIBUCL_VERSION_PATCH 9) 6 7SET(LIBUCL_VERSION "${LIBUCL_VERSION_MAJOR}.${LIBUCL_VERSION_MINOR}.${LIBUCL_VERSION_PATCH}") 8 9INCLUDE(CheckCCompilerFlag) 10INCLUDE(FindOpenSSL) 11CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR) 12 13OPTION(ENABLE_URL_INCLUDE "Enable urls in ucl includes (requires libcurl or libfetch) [default: OFF]" OFF) 14OPTION(ENABLE_URL_SIGN "Enable signatures check in ucl includes (requires openssl) [default: OFF]" OFF) 15OPTION(BUILD_SHARED_LIBS "Build Shared Libraries [default: OFF]" OFF) 16 17IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") 18 LIST(APPEND CMAKE_REQUIRED_LIBRARIES rt) 19ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") 20 21IF(ENABLE_URL_INCLUDE MATCHES "ON") 22 FIND_LIBRARY(LIBFETCH_LIBRARY NAMES fetch PATHS PATH_SUFFIXES lib64 lib 23 PATHS 24 ~/Library/Frameworks 25 /Library/Frameworks 26 /usr/local 27 /usr 28 /sw 29 /opt/local 30 /opt/csw 31 /opt 32 DOC "Path where the libfetch library can be found") 33 IF(LIBFETCH_LIBRARY) 34 FIND_FILE(HAVE_FETCH_H NAMES fetch.h PATHS /usr/include 35 /opt/include 36 /usr/local/include 37 DOC "Path to libfetch header") 38 ELSE(LIBFETCH_LIBRARY) 39 # Try to find libcurl 40 ProcessPackage(CURL libcurl) 41 IF(NOT CURL_FOUND) 42 MESSAGE(WARNING "Neither libcurl nor libfetch were found, no support of URL includes in configuration") 43 ENDIF(NOT CURL_FOUND) 44 ENDIF(LIBFETCH_LIBRARY) 45ENDIF(ENABLE_URL_INCLUDE MATCHES "ON") 46 47SET(CMAKE_C_WARN_FLAGS "") 48CHECK_C_COMPILER_FLAG(-Wall SUPPORT_WALL) 49CHECK_C_COMPILER_FLAG(-W SUPPORT_W) 50CHECK_C_COMPILER_FLAG(-Wno-unused-parameter SUPPORT_WPARAM) 51CHECK_C_COMPILER_FLAG(-Wno-pointer-sign SUPPORT_WPOINTER_SIGN) 52CHECK_C_COMPILER_FLAG(-Wstrict-prototypes SUPPORT_WSTRICT_PROTOTYPES) 53IF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro) 54 CHECK_C_COMPILER_FLAG("-std=c99" SUPPORT_STD_FLAG) 55ENDIF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro) 56IF(SUPPORT_W) 57 SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -W") 58ENDIF(SUPPORT_W) 59IF(SUPPORT_WALL) 60 SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wall") 61ENDIF(SUPPORT_WALL) 62IF(SUPPORT_WPARAM) 63 SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-unused-parameter") 64ENDIF(SUPPORT_WPARAM) 65IF(SUPPORT_WPOINTER_SIGN) 66 SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-pointer-sign") 67ENDIF(SUPPORT_WPOINTER_SIGN) 68IF(SUPPORT_WSTRICT_PROTOTYPES) 69 SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wstrict-prototypes") 70ENDIF(SUPPORT_WSTRICT_PROTOTYPES) 71IF(SUPPORT_STD_FLAG) 72 SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -std=c99") 73ENDIF(SUPPORT_STD_FLAG) 74 75IF(ENABLE_URL_SIGN MATCHES "ON") 76 IF(OPENSSL_FOUND) 77 SET(HAVE_OPENSSL 1) 78 INCLUDE_DIRECTORIES("${OPENSSL_INCLUDE_DIR}") 79 ENDIF(OPENSSL_FOUND) 80ENDIF(ENABLE_URL_SIGN MATCHES "ON") 81 82INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../src") 83INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../include") 84INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../uthash") 85 86SET(UCLSRC ../src/ucl_util.c 87 ../src/ucl_parser.c 88 ../src/ucl_emitter.c 89 ../src/ucl_hash.c 90 ../src/ucl_schema.c 91 ../src/xxhash.c) 92 93 94SET (LIB_TYPE STATIC) 95IF (BUILD_SHARED_LIBS) 96 SET (LIB_TYPE SHARED) 97ENDIF (BUILD_SHARED_LIBS) 98ADD_LIBRARY(ucl ${LIB_TYPE} ${UCLSRC}) 99SET_TARGET_PROPERTIES(ucl PROPERTIES VERSION ${LIBUCL_VERSION} SOVERSION ${LIBUCL_VERSION_MAJOR}) 100 101IF(HAVE_FETCH_H) 102 TARGET_LINK_LIBRARIES(ucl fetch) 103ELSE(HAVE_FETCH_H) 104 IF(CURL_FOUND) 105 TARGET_LINK_LIBRARIES(ucl ${CURL_LIBRARIES}) 106 ENDIF(CURL_FOUND) 107ENDIF(HAVE_FETCH_H) 108IF(ENABLE_URL_SIGN MATCHES "ON") 109 IF(OPENSSL_FOUND) 110 TARGET_LINK_LIBRARIES(ucl ${OPENSSL_LIBRARIES}) 111 ENDIF(OPENSSL_FOUND) 112ENDIF(ENABLE_URL_SIGN MATCHES "ON") 113