]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/libucl/cmake/CMakeLists.txt
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / libucl / cmake / CMakeLists.txt
1 PROJECT(libucl C)
2
3 SET(LIBUCL_VERSION_MAJOR 0)
4 SET(LIBUCL_VERSION_MINOR 2)
5 SET(LIBUCL_VERSION_PATCH 9)
6
7 SET(LIBUCL_VERSION         "${LIBUCL_VERSION_MAJOR}.${LIBUCL_VERSION_MINOR}.${LIBUCL_VERSION_PATCH}")
8
9 INCLUDE(CheckCCompilerFlag)
10 INCLUDE(FindOpenSSL)
11 CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
12
13 OPTION(ENABLE_URL_INCLUDE  "Enable urls in ucl includes (requires libcurl or libfetch) [default: OFF]" OFF)
14 OPTION(ENABLE_URL_SIGN  "Enable signatures check in ucl includes (requires openssl) [default: OFF]" OFF)
15 OPTION(BUILD_SHARED_LIBS "Build Shared Libraries [default: OFF]" OFF)
16
17 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
18         LIST(APPEND CMAKE_REQUIRED_LIBRARIES rt)
19 ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
20
21 IF(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)
45 ENDIF(ENABLE_URL_INCLUDE MATCHES "ON")
46
47 SET(CMAKE_C_WARN_FLAGS "")
48 CHECK_C_COMPILER_FLAG(-Wall SUPPORT_WALL)
49 CHECK_C_COMPILER_FLAG(-W SUPPORT_W)
50 CHECK_C_COMPILER_FLAG(-Wno-unused-parameter SUPPORT_WPARAM)
51 CHECK_C_COMPILER_FLAG(-Wno-pointer-sign SUPPORT_WPOINTER_SIGN)
52 CHECK_C_COMPILER_FLAG(-Wstrict-prototypes SUPPORT_WSTRICT_PROTOTYPES)
53 IF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro)
54         CHECK_C_COMPILER_FLAG("-std=c99" SUPPORT_STD_FLAG)
55 ENDIF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro)
56 IF(SUPPORT_W)
57         SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -W")
58 ENDIF(SUPPORT_W)
59 IF(SUPPORT_WALL)
60         SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wall")
61 ENDIF(SUPPORT_WALL)
62 IF(SUPPORT_WPARAM)
63         SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-unused-parameter")
64 ENDIF(SUPPORT_WPARAM)
65 IF(SUPPORT_WPOINTER_SIGN)
66         SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-pointer-sign")
67 ENDIF(SUPPORT_WPOINTER_SIGN)
68 IF(SUPPORT_WSTRICT_PROTOTYPES)
69         SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wstrict-prototypes")
70 ENDIF(SUPPORT_WSTRICT_PROTOTYPES)
71 IF(SUPPORT_STD_FLAG)
72         SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -std=c99")
73 ENDIF(SUPPORT_STD_FLAG)
74
75 IF(ENABLE_URL_SIGN MATCHES "ON")
76         IF(OPENSSL_FOUND)
77                 SET(HAVE_OPENSSL 1)
78                 INCLUDE_DIRECTORIES("${OPENSSL_INCLUDE_DIR}")
79         ENDIF(OPENSSL_FOUND)
80 ENDIF(ENABLE_URL_SIGN MATCHES "ON")
81
82 INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../src")
83 INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../include")
84 INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../uthash")
85
86 SET(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
94 SET (LIB_TYPE STATIC)
95 IF (BUILD_SHARED_LIBS)
96   SET (LIB_TYPE SHARED)
97 ENDIF (BUILD_SHARED_LIBS)
98 ADD_LIBRARY(ucl ${LIB_TYPE} ${UCLSRC})
99 SET_TARGET_PROPERTIES(ucl PROPERTIES VERSION ${LIBUCL_VERSION} SOVERSION ${LIBUCL_VERSION_MAJOR})
100
101 IF(HAVE_FETCH_H)
102     TARGET_LINK_LIBRARIES(ucl fetch)
103 ELSE(HAVE_FETCH_H)
104     IF(CURL_FOUND)
105         TARGET_LINK_LIBRARIES(ucl ${CURL_LIBRARIES})
106     ENDIF(CURL_FOUND)
107 ENDIF(HAVE_FETCH_H)
108 IF(ENABLE_URL_SIGN MATCHES "ON")
109         IF(OPENSSL_FOUND)
110                 TARGET_LINK_LIBRARIES(ucl ${OPENSSL_LIBRARIES})
111         ENDIF(OPENSSL_FOUND)
112 ENDIF(ENABLE_URL_SIGN MATCHES "ON")