1268896SbaptPROJECT(libucl C) 2268896Sbapt 3268896SbaptSET(LIBUCL_VERSION_MAJOR 0) 4268896SbaptSET(LIBUCL_VERSION_MINOR 2) 5268896SbaptSET(LIBUCL_VERSION_PATCH 9) 6268896Sbapt 7268896SbaptSET(LIBUCL_VERSION "${LIBUCL_VERSION_MAJOR}.${LIBUCL_VERSION_MINOR}.${LIBUCL_VERSION_PATCH}") 8268896Sbapt 9268896SbaptINCLUDE(CheckCCompilerFlag) 10268896SbaptINCLUDE(FindOpenSSL) 11268896SbaptCMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR) 12268896Sbapt 13268896SbaptOPTION(ENABLE_URL_INCLUDE "Enable urls in ucl includes (requires libcurl or libfetch) [default: OFF]" OFF) 14268896SbaptOPTION(ENABLE_URL_SIGN "Enable signatures check in ucl includes (requires openssl) [default: OFF]" OFF) 15268896SbaptOPTION(BUILD_SHARED_LIBS "Build Shared Libraries [default: OFF]" OFF) 16268896Sbapt 17268896SbaptIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") 18268896Sbapt LIST(APPEND CMAKE_REQUIRED_LIBRARIES rt) 19268896SbaptENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") 20268896Sbapt 21268896SbaptIF(ENABLE_URL_INCLUDE MATCHES "ON") 22268896Sbapt FIND_LIBRARY(LIBFETCH_LIBRARY NAMES fetch PATHS PATH_SUFFIXES lib64 lib 23268896Sbapt PATHS 24268896Sbapt ~/Library/Frameworks 25268896Sbapt /Library/Frameworks 26268896Sbapt /usr/local 27268896Sbapt /usr 28268896Sbapt /sw 29268896Sbapt /opt/local 30268896Sbapt /opt/csw 31268896Sbapt /opt 32268896Sbapt DOC "Path where the libfetch library can be found") 33268896Sbapt IF(LIBFETCH_LIBRARY) 34268896Sbapt FIND_FILE(HAVE_FETCH_H NAMES fetch.h PATHS /usr/include 35268896Sbapt /opt/include 36268896Sbapt /usr/local/include 37268896Sbapt DOC "Path to libfetch header") 38268896Sbapt ELSE(LIBFETCH_LIBRARY) 39268896Sbapt # Try to find libcurl 40268896Sbapt ProcessPackage(CURL libcurl) 41268896Sbapt IF(NOT CURL_FOUND) 42268896Sbapt MESSAGE(WARNING "Neither libcurl nor libfetch were found, no support of URL includes in configuration") 43268896Sbapt ENDIF(NOT CURL_FOUND) 44268896Sbapt ENDIF(LIBFETCH_LIBRARY) 45268896SbaptENDIF(ENABLE_URL_INCLUDE MATCHES "ON") 46268896Sbapt 47268896SbaptSET(CMAKE_C_WARN_FLAGS "") 48268896SbaptCHECK_C_COMPILER_FLAG(-Wall SUPPORT_WALL) 49268896SbaptCHECK_C_COMPILER_FLAG(-W SUPPORT_W) 50268896SbaptCHECK_C_COMPILER_FLAG(-Wno-unused-parameter SUPPORT_WPARAM) 51268896SbaptCHECK_C_COMPILER_FLAG(-Wno-pointer-sign SUPPORT_WPOINTER_SIGN) 52268896SbaptCHECK_C_COMPILER_FLAG(-Wstrict-prototypes SUPPORT_WSTRICT_PROTOTYPES) 53268896SbaptIF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro) 54268896Sbapt CHECK_C_COMPILER_FLAG("-std=c99" SUPPORT_STD_FLAG) 55268896SbaptENDIF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro) 56268896SbaptIF(SUPPORT_W) 57268896Sbapt SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -W") 58268896SbaptENDIF(SUPPORT_W) 59268896SbaptIF(SUPPORT_WALL) 60268896Sbapt SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wall") 61268896SbaptENDIF(SUPPORT_WALL) 62268896SbaptIF(SUPPORT_WPARAM) 63268896Sbapt SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-unused-parameter") 64268896SbaptENDIF(SUPPORT_WPARAM) 65268896SbaptIF(SUPPORT_WPOINTER_SIGN) 66268896Sbapt SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-pointer-sign") 67268896SbaptENDIF(SUPPORT_WPOINTER_SIGN) 68268896SbaptIF(SUPPORT_WSTRICT_PROTOTYPES) 69268896Sbapt SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wstrict-prototypes") 70268896SbaptENDIF(SUPPORT_WSTRICT_PROTOTYPES) 71268896SbaptIF(SUPPORT_STD_FLAG) 72268896Sbapt SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -std=c99") 73268896SbaptENDIF(SUPPORT_STD_FLAG) 74268896Sbapt 75268896SbaptIF(ENABLE_URL_SIGN MATCHES "ON") 76268896Sbapt IF(OPENSSL_FOUND) 77268896Sbapt SET(HAVE_OPENSSL 1) 78268896Sbapt INCLUDE_DIRECTORIES("${OPENSSL_INCLUDE_DIR}") 79268896Sbapt ENDIF(OPENSSL_FOUND) 80268896SbaptENDIF(ENABLE_URL_SIGN MATCHES "ON") 81268896Sbapt 82268896SbaptINCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../src") 83268896SbaptINCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../include") 84268896SbaptINCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../uthash") 85268896Sbapt 86268896SbaptSET(UCLSRC ../src/ucl_util.c 87268896Sbapt ../src/ucl_parser.c 88268896Sbapt ../src/ucl_emitter.c 89268896Sbapt ../src/ucl_hash.c 90268896Sbapt ../src/ucl_schema.c 91268896Sbapt ../src/xxhash.c) 92268896Sbapt 93268896Sbapt 94268896SbaptSET (LIB_TYPE STATIC) 95268896SbaptIF (BUILD_SHARED_LIBS) 96268896Sbapt SET (LIB_TYPE SHARED) 97268896SbaptENDIF (BUILD_SHARED_LIBS) 98268896SbaptADD_LIBRARY(ucl ${LIB_TYPE} ${UCLSRC}) 99268896SbaptSET_TARGET_PROPERTIES(ucl PROPERTIES VERSION ${LIBUCL_VERSION} SOVERSION ${LIBUCL_VERSION_MAJOR}) 100268896Sbapt 101268896SbaptIF(HAVE_FETCH_H) 102268896Sbapt TARGET_LINK_LIBRARIES(ucl fetch) 103268896SbaptELSE(HAVE_FETCH_H) 104268896Sbapt IF(CURL_FOUND) 105268896Sbapt TARGET_LINK_LIBRARIES(ucl ${CURL_LIBRARIES}) 106268896Sbapt ENDIF(CURL_FOUND) 107268896SbaptENDIF(HAVE_FETCH_H) 108268896SbaptIF(ENABLE_URL_SIGN MATCHES "ON") 109268896Sbapt IF(OPENSSL_FOUND) 110268896Sbapt TARGET_LINK_LIBRARIES(ucl ${OPENSSL_LIBRARIES}) 111268896Sbapt ENDIF(OPENSSL_FOUND) 112268896SbaptENDIF(ENABLE_URL_SIGN MATCHES "ON") 113