xref: /freebsd/contrib/libucl/CMakeLists.txt (revision a0409676120c1e558d0ade943019934e0f15118d)
139ee7a7aSBaptiste DaroussinPROJECT(libucl C)
239ee7a7aSBaptiste DaroussinCMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
339ee7a7aSBaptiste Daroussin
439ee7a7aSBaptiste DaroussinSET(LIBUCL_VERSION_MAJOR 0)
539ee7a7aSBaptiste DaroussinSET(LIBUCL_VERSION_MINOR 5)
639ee7a7aSBaptiste DaroussinSET(LIBUCL_VERSION_PATCH 0)
739ee7a7aSBaptiste Daroussin
839ee7a7aSBaptiste DaroussinSET(LIBUCL_VERSION
939ee7a7aSBaptiste Daroussin        "${LIBUCL_VERSION_MAJOR}.${LIBUCL_VERSION_MINOR}.${LIBUCL_VERSION_PATCH}")
1039ee7a7aSBaptiste Daroussin
1139ee7a7aSBaptiste DaroussinINCLUDE(CheckCCompilerFlag)
12*a0409676SBaptiste DaroussinINCLUDE(CheckCSourceCompiles)
1339ee7a7aSBaptiste DaroussinINCLUDE(FindOpenSSL)
14*a0409676SBaptiste DaroussinINCLUDE(GNUInstallDirs)
1539ee7a7aSBaptiste Daroussin
1639ee7a7aSBaptiste DaroussinOPTION(ENABLE_URL_INCLUDE  "Enable urls in ucl includes (requires libcurl or libfetch) [default: OFF]" OFF)
1739ee7a7aSBaptiste DaroussinOPTION(ENABLE_URL_SIGN  "Enable signatures check in ucl includes (requires openssl) [default: OFF]" OFF)
1839ee7a7aSBaptiste DaroussinOPTION(BUILD_SHARED_LIBS "Build Shared Libraries [default: OFF]" OFF)
1939ee7a7aSBaptiste DaroussinOPTION(ENABLE_LUA "Enable lua support [default: OFF]" OFF)
2039ee7a7aSBaptiste DaroussinOPTION(ENABLE_LUAJIT "Enable luajit support [default: OFF]" OFF)
21*a0409676SBaptiste DaroussinOPTION(ENABLE_UTILS "Enable building utility binaries [default: OFF]" OFF)
2239ee7a7aSBaptiste Daroussin
2339ee7a7aSBaptiste Daroussin# Find lua installation
2439ee7a7aSBaptiste DaroussinMACRO(FindLua)
2539ee7a7aSBaptiste Daroussin	# Find lua libraries
2639ee7a7aSBaptiste Daroussin	UNSET(LUA_INCLUDE_DIR CACHE)
2739ee7a7aSBaptiste Daroussin	UNSET(LUA_LIBRARY CACHE)
2839ee7a7aSBaptiste Daroussin	CMAKE_PARSE_ARGUMENTS(LUA "" "VERSION_MAJOR;VERSION_MINOR;ROOT" "" ${ARGN})
2939ee7a7aSBaptiste Daroussin
3039ee7a7aSBaptiste Daroussin	IF(NOT LUA_VERSION_MAJOR OR NOT LUA_VERSION_MINOR)
3139ee7a7aSBaptiste Daroussin		MESSAGE(FATAL_ERROR "Invalid FindLua invocation: ${ARGN}")
3239ee7a7aSBaptiste Daroussin	ENDIF()
3339ee7a7aSBaptiste Daroussin
3439ee7a7aSBaptiste Daroussin	IF(ENABLE_LUAJIT MATCHES "ON")
3539ee7a7aSBaptiste Daroussin		MESSAGE(STATUS "Check for luajit ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
3639ee7a7aSBaptiste Daroussin		FIND_PATH(LUA_INCLUDE_DIR luajit.h
3739ee7a7aSBaptiste Daroussin				HINTS
3839ee7a7aSBaptiste Daroussin				"${RSPAMD_SEARCH_PATH}" "${LUA_ROOT}"
3939ee7a7aSBaptiste Daroussin				$ENV{LUA_DIR}
4039ee7a7aSBaptiste Daroussin				PATH_SUFFIXES "include/luajit-2.0"
4139ee7a7aSBaptiste Daroussin				"include/luajit${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
4239ee7a7aSBaptiste Daroussin				"include/luajit${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
4339ee7a7aSBaptiste Daroussin				"include/luajit-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
4439ee7a7aSBaptiste Daroussin				"include/luajit"
4539ee7a7aSBaptiste Daroussin				"include/lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
4639ee7a7aSBaptiste Daroussin				"include/lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
4739ee7a7aSBaptiste Daroussin				"include/lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
4839ee7a7aSBaptiste Daroussin				include/lua include
4939ee7a7aSBaptiste Daroussin				PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS}
5039ee7a7aSBaptiste Daroussin		)
5139ee7a7aSBaptiste Daroussin		FIND_LIBRARY(LUA_LIBRARY
5239ee7a7aSBaptiste Daroussin				NAMES luajit
5339ee7a7aSBaptiste Daroussin				"luajit-2.0"
5439ee7a7aSBaptiste Daroussin				"luajit2.0"
5539ee7a7aSBaptiste Daroussin				"luajit${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
5639ee7a7aSBaptiste Daroussin				"luajit${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
5739ee7a7aSBaptiste Daroussin				"luajit-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
5839ee7a7aSBaptiste Daroussin				HINTS
5939ee7a7aSBaptiste Daroussin				"${RSPAMD_SEARCH_PATH}" "${LUA_ROOT}"
6039ee7a7aSBaptiste Daroussin				$ENV{LUA_DIR}
6139ee7a7aSBaptiste Daroussin				PATH_SUFFIXES lib64 lib
6239ee7a7aSBaptiste Daroussin				PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS}
6339ee7a7aSBaptiste Daroussin				DOC "Lua library"
6439ee7a7aSBaptiste Daroussin		)
6539ee7a7aSBaptiste Daroussin
6639ee7a7aSBaptiste Daroussin		IF(NOT LUA_LIBRARY OR NOT LUA_INCLUDE_DIR)
6739ee7a7aSBaptiste Daroussin			MESSAGE(STATUS "Fallback from luajit to plain lua")
6839ee7a7aSBaptiste Daroussin			SET(ENABLE_LUAJIT "OFF")
6939ee7a7aSBaptiste Daroussin			MESSAGE(STATUS "Check for lua ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
7039ee7a7aSBaptiste Daroussin			FIND_PATH(LUA_INCLUDE_DIR lua.h
7139ee7a7aSBaptiste Daroussin					HINTS
7239ee7a7aSBaptiste Daroussin					"${RSPAMD_SEARCH_PATH}" "${LUA_ROOT}"
7339ee7a7aSBaptiste Daroussin					$ENV{LUA_DIR}
7439ee7a7aSBaptiste Daroussin					PATH_SUFFIXES "include/lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
7539ee7a7aSBaptiste Daroussin					"include/lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
7639ee7a7aSBaptiste Daroussin					"include/lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
7739ee7a7aSBaptiste Daroussin					include/lua include
7839ee7a7aSBaptiste Daroussin					PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS}
7939ee7a7aSBaptiste Daroussin			)
8039ee7a7aSBaptiste Daroussin			FIND_LIBRARY(LUA_LIBRARY
8139ee7a7aSBaptiste Daroussin					NAMES lua
8239ee7a7aSBaptiste Daroussin					"lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
8339ee7a7aSBaptiste Daroussin					"lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
8439ee7a7aSBaptiste Daroussin					"lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
8539ee7a7aSBaptiste Daroussin					HINTS
8639ee7a7aSBaptiste Daroussin					"${RSPAMD_SEARCH_PATH}" "${LUA_ROOT}"
8739ee7a7aSBaptiste Daroussin					$ENV{LUA_DIR}
8839ee7a7aSBaptiste Daroussin					PATH_SUFFIXES lib64 lib
8939ee7a7aSBaptiste Daroussin					PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS}
9039ee7a7aSBaptiste Daroussin					DOC "Lua library"
9139ee7a7aSBaptiste Daroussin			)
9239ee7a7aSBaptiste Daroussin		ENDIF()
9339ee7a7aSBaptiste Daroussin	ELSE(ENABLE_LUAJIT MATCHES "ON")
9439ee7a7aSBaptiste Daroussin		MESSAGE(STATUS "Check for lua ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
9539ee7a7aSBaptiste Daroussin		FIND_PATH(LUA_INCLUDE_DIR lua.h
9639ee7a7aSBaptiste Daroussin				HINTS
9739ee7a7aSBaptiste Daroussin				"${RSPAMD_SEARCH_PATH}" "${LUA_ROOT}"
9839ee7a7aSBaptiste Daroussin				$ENV{LUA_DIR}
9939ee7a7aSBaptiste Daroussin				PATH_SUFFIXES "include/lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
10039ee7a7aSBaptiste Daroussin				"include/lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
10139ee7a7aSBaptiste Daroussin				"include/lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
10239ee7a7aSBaptiste Daroussin				include/lua include
10339ee7a7aSBaptiste Daroussin				PATHS ${RSPAMD_DEFAULT_INCLUDE_PATHS}
10439ee7a7aSBaptiste Daroussin		)
10539ee7a7aSBaptiste Daroussin		FIND_LIBRARY(LUA_LIBRARY
10639ee7a7aSBaptiste Daroussin				NAMES lua
10739ee7a7aSBaptiste Daroussin				"lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}"
10839ee7a7aSBaptiste Daroussin				"lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
10939ee7a7aSBaptiste Daroussin				"lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}"
11039ee7a7aSBaptiste Daroussin				HINTS
11139ee7a7aSBaptiste Daroussin				"${RSPAMD_SEARCH_PATH}" "${LUA_ROOT}"
11239ee7a7aSBaptiste Daroussin				$ENV{LUA_DIR}
11339ee7a7aSBaptiste Daroussin				PATH_SUFFIXES lib64 lib
11439ee7a7aSBaptiste Daroussin				PATHS ${RSPAMD_DEFAULT_LIBRARY_PATHS}
11539ee7a7aSBaptiste Daroussin				DOC "Lua library"
11639ee7a7aSBaptiste Daroussin		)
11739ee7a7aSBaptiste Daroussin	ENDIF(ENABLE_LUAJIT MATCHES "ON")
11839ee7a7aSBaptiste Daroussin
11939ee7a7aSBaptiste Daroussin	IF(LUA_LIBRARY AND LUA_INCLUDE_DIR)
12039ee7a7aSBaptiste Daroussin		SET(LUA_FOUND 1)
12139ee7a7aSBaptiste Daroussin		IF(NOT LUA_VERSION_MAJOR OR NOT LUA_VERSION_MINOR)
12239ee7a7aSBaptiste Daroussin			SET(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR})
12339ee7a7aSBaptiste Daroussin			SET(LUA_VERSION_MINOR ${LUA_VERSION_MINOR})
12439ee7a7aSBaptiste Daroussin		ENDIF(NOT LUA_VERSION_MAJOR OR NOT LUA_VERSION_MINOR)
12539ee7a7aSBaptiste Daroussin		IF(ENABLE_LUAJIT MATCHES "ON")
12639ee7a7aSBaptiste Daroussin			MESSAGE(STATUS "Found luajit ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
12739ee7a7aSBaptiste Daroussin		ELSE(ENABLE_LUAJIT MATCHES "ON")
12839ee7a7aSBaptiste Daroussin			MESSAGE(STATUS "Found lua ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
12939ee7a7aSBaptiste Daroussin		ENDIF(ENABLE_LUAJIT MATCHES "ON")
13039ee7a7aSBaptiste Daroussin	ENDIF(LUA_LIBRARY AND LUA_INCLUDE_DIR)
13139ee7a7aSBaptiste DaroussinENDMACRO()
13239ee7a7aSBaptiste Daroussin
13339ee7a7aSBaptiste DaroussinIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
13439ee7a7aSBaptiste Daroussin	LIST(APPEND CMAKE_REQUIRED_LIBRARIES rt)
13539ee7a7aSBaptiste DaroussinENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
13639ee7a7aSBaptiste Daroussin
13739ee7a7aSBaptiste DaroussinIF(ENABLE_URL_INCLUDE MATCHES "ON")
13839ee7a7aSBaptiste Daroussin    FIND_LIBRARY(LIBFETCH_LIBRARY NAMES fetch PATHS	PATH_SUFFIXES lib64 lib
13939ee7a7aSBaptiste Daroussin                      PATHS
14039ee7a7aSBaptiste Daroussin                          ~/Library/Frameworks
14139ee7a7aSBaptiste Daroussin                          /Library/Frameworks
14239ee7a7aSBaptiste Daroussin                          /usr/local
14339ee7a7aSBaptiste Daroussin                          /usr
14439ee7a7aSBaptiste Daroussin                          /sw
14539ee7a7aSBaptiste Daroussin                          /opt/local
14639ee7a7aSBaptiste Daroussin                          /opt/csw
14739ee7a7aSBaptiste Daroussin                          /opt
14839ee7a7aSBaptiste Daroussin                     DOC "Path where the libfetch library can be found")
14939ee7a7aSBaptiste Daroussin    IF(LIBFETCH_LIBRARY)
15039ee7a7aSBaptiste Daroussin    	FIND_FILE(HAVE_FETCH_H NAMES fetch.h PATHS /usr/include
15139ee7a7aSBaptiste Daroussin    											   /opt/include
15239ee7a7aSBaptiste Daroussin    											   /usr/local/include
15339ee7a7aSBaptiste Daroussin    				DOC "Path to libfetch header")
15439ee7a7aSBaptiste Daroussin    ELSE(LIBFETCH_LIBRARY)
15539ee7a7aSBaptiste Daroussin    	# Try to find libcurl
156*a0409676SBaptiste Daroussin        FIND_PACKAGE(CURL)
15739ee7a7aSBaptiste Daroussin    	IF(NOT CURL_FOUND)
15839ee7a7aSBaptiste Daroussin    		MESSAGE(WARNING "Neither libcurl nor libfetch were found, no support of URL includes in configuration")
15939ee7a7aSBaptiste Daroussin    	ENDIF(NOT CURL_FOUND)
16039ee7a7aSBaptiste Daroussin    ENDIF(LIBFETCH_LIBRARY)
16139ee7a7aSBaptiste DaroussinENDIF(ENABLE_URL_INCLUDE MATCHES "ON")
16239ee7a7aSBaptiste Daroussin
163*a0409676SBaptiste Daroussinset(SYNC_BUILTINS_TEST_SOURCE [====[
164*a0409676SBaptiste Daroussinint main()
165*a0409676SBaptiste Daroussin{
166*a0409676SBaptiste Daroussin    unsigned long val;
167*a0409676SBaptiste Daroussin
168*a0409676SBaptiste Daroussin    __sync_bool_compare_and_swap(&val, 0, 1);
169*a0409676SBaptiste Daroussin    __sync_add_and_fetch(&val, 1);
170*a0409676SBaptiste Daroussin    __sync_fetch_and_add(&val, 0);
171*a0409676SBaptiste Daroussin    __sync_sub_and_fetch(&val, 1);
172*a0409676SBaptiste Daroussin
173*a0409676SBaptiste Daroussin    return 0;
174*a0409676SBaptiste Daroussin}
175*a0409676SBaptiste Daroussin]====])
176*a0409676SBaptiste Daroussin
177*a0409676SBaptiste DaroussinCHECK_C_SOURCE_COMPILES("${SYNC_BUILTINS_TEST_SOURCE}" HAVE_ATOMIC_BUILTINS)
178*a0409676SBaptiste DaroussinIF(NOT HAVE_ATOMIC_BUILTINS)
179*a0409676SBaptiste Daroussin    MESSAGE(WARNING "Libucl references could be thread-unsafe because atomic builtins are missing")
180*a0409676SBaptiste DaroussinENDIF(NOT HAVE_ATOMIC_BUILTINS)
181*a0409676SBaptiste Daroussin
18239ee7a7aSBaptiste DaroussinSET(CMAKE_C_WARN_FLAGS "")
18339ee7a7aSBaptiste DaroussinCHECK_C_COMPILER_FLAG(-W SUPPORT_W)
18439ee7a7aSBaptiste DaroussinCHECK_C_COMPILER_FLAG(-Wno-pointer-sign SUPPORT_WPOINTER_SIGN)
185*a0409676SBaptiste DaroussinCHECK_C_COMPILER_FLAG(-Wno-unused-parameter SUPPORT_WUNUSED_PARAMETER)
18639ee7a7aSBaptiste DaroussinIF(SUPPORT_W)
18739ee7a7aSBaptiste Daroussin    SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -W")
18839ee7a7aSBaptiste DaroussinENDIF(SUPPORT_W)
18939ee7a7aSBaptiste DaroussinIF(SUPPORT_WPOINTER_SIGN)
19039ee7a7aSBaptiste Daroussin	SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-pointer-sign")
19139ee7a7aSBaptiste DaroussinENDIF(SUPPORT_WPOINTER_SIGN)
192*a0409676SBaptiste DaroussinIF(SUPPORT_WUNUSED_PARAMETER)
193*a0409676SBaptiste Daroussin	SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -Wno-unused-parameter")
194*a0409676SBaptiste DaroussinENDIF(SUPPORT_WUNUSED_PARAMETER)
195*a0409676SBaptiste Daroussin
196*a0409676SBaptiste DaroussinSET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_WARN_FLAGS}" )
19739ee7a7aSBaptiste Daroussin
19839ee7a7aSBaptiste DaroussinIF(ENABLE_URL_SIGN MATCHES "ON")
19939ee7a7aSBaptiste Daroussin	IF(OPENSSL_FOUND)
20039ee7a7aSBaptiste Daroussin		SET(HAVE_OPENSSL 1)
20139ee7a7aSBaptiste Daroussin		INCLUDE_DIRECTORIES("${OPENSSL_INCLUDE_DIR}")
20239ee7a7aSBaptiste Daroussin	ENDIF(OPENSSL_FOUND)
20339ee7a7aSBaptiste DaroussinENDIF(ENABLE_URL_SIGN MATCHES "ON")
20439ee7a7aSBaptiste Daroussin
205*a0409676SBaptiste DaroussinSET(UCL_COMPILE_DEFS)
206*a0409676SBaptiste DaroussinIF(HAVE_FETCH_H)
207*a0409676SBaptiste Daroussin    LIST(APPEND UCL_COMPILE_DEFS -DHAVE_FETCH_H=1)
208*a0409676SBaptiste DaroussinENDIF(HAVE_FETCH_H)
209*a0409676SBaptiste DaroussinIF(CURL_FOUND)
210*a0409676SBaptiste Daroussin    LIST(APPEND UCL_COMPILE_DEFS -DCURL_FOUND=1)
211*a0409676SBaptiste DaroussinENDIF(CURL_FOUND)
212*a0409676SBaptiste DaroussinIF(HAVE_OPENSSL)
213*a0409676SBaptiste Daroussin    LIST(APPEND UCL_COMPILE_DEFS -DHAVE_OPENSSL=1)
214*a0409676SBaptiste DaroussinENDIF(HAVE_OPENSSL)
215*a0409676SBaptiste DaroussinIF(HAVE_ATOMIC_BUILTINS)
216*a0409676SBaptiste Daroussin    LIST(APPEND UCL_COMPILE_DEFS -DHAVE_ATOMIC_BUILTINS=1)
217*a0409676SBaptiste DaroussinENDIF(HAVE_ATOMIC_BUILTINS)
21839ee7a7aSBaptiste Daroussin
21939ee7a7aSBaptiste DaroussinSET(UCLSRC src/ucl_util.c
22039ee7a7aSBaptiste Daroussin		src/ucl_parser.c
22139ee7a7aSBaptiste Daroussin		src/ucl_emitter.c
22239ee7a7aSBaptiste Daroussin		src/ucl_emitter_streamline.c
22339ee7a7aSBaptiste Daroussin		src/ucl_emitter_utils.c
22439ee7a7aSBaptiste Daroussin		src/ucl_hash.c
22539ee7a7aSBaptiste Daroussin		src/ucl_schema.c
22639ee7a7aSBaptiste Daroussin		src/ucl_msgpack.c
227273c26a3SBaptiste Daroussin		src/ucl_sexp.c)
22839ee7a7aSBaptiste Daroussin
229*a0409676SBaptiste DaroussinSET(UCLHDR include/ucl.h
230*a0409676SBaptiste Daroussin		include/ucl++.h)
23139ee7a7aSBaptiste Daroussin
23239ee7a7aSBaptiste DaroussinSET (LIB_TYPE STATIC)
23339ee7a7aSBaptiste DaroussinIF (BUILD_SHARED_LIBS)
23439ee7a7aSBaptiste Daroussin  SET (LIB_TYPE SHARED)
23539ee7a7aSBaptiste DaroussinENDIF (BUILD_SHARED_LIBS)
23639ee7a7aSBaptiste DaroussinADD_LIBRARY(ucl ${LIB_TYPE} ${UCLSRC})
237*a0409676SBaptiste DaroussinADD_LIBRARY(ucl::ucl ALIAS ucl)
23839ee7a7aSBaptiste DaroussinSET_TARGET_PROPERTIES(ucl PROPERTIES VERSION ${LIBUCL_VERSION} SOVERSION ${LIBUCL_VERSION_MAJOR})
239*a0409676SBaptiste DaroussinTARGET_INCLUDE_DIRECTORIES(ucl
240*a0409676SBaptiste Daroussin	PUBLIC
241*a0409676SBaptiste Daroussin	  include
242*a0409676SBaptiste Daroussin	PRIVATE
243*a0409676SBaptiste Daroussin	  src
244*a0409676SBaptiste Daroussin	  uthash
245*a0409676SBaptiste Daroussin	  klib)
246*a0409676SBaptiste DaroussinTARGET_COMPILE_DEFINITIONS(ucl
247*a0409676SBaptiste Daroussin    PRIVATE
248*a0409676SBaptiste Daroussin    ${UCL_COMPILE_DEFS}
249*a0409676SBaptiste Daroussin)
25039ee7a7aSBaptiste Daroussin
25139ee7a7aSBaptiste DaroussinIF(ENABLE_LUA MATCHES "ON")
25239ee7a7aSBaptiste Daroussin	IF(ENABLE_LUAJIT MATCHES "ON")
25339ee7a7aSBaptiste Daroussin		FindLua(VERSION_MAJOR "5" VERSION_MINOR "1" ROOT "${LUA_ROOT}")
25439ee7a7aSBaptiste Daroussin		IF(NOT LUA_FOUND)
25539ee7a7aSBaptiste Daroussin			MESSAGE(FATAL_ERROR "Lua not found, lua support is required")
25639ee7a7aSBaptiste Daroussin		ELSE(NOT LUA_FOUND)
25739ee7a7aSBaptiste Daroussin			INCLUDE_DIRECTORIES("${LUA_INCLUDE_DIR}")
25839ee7a7aSBaptiste Daroussin		ENDIF(NOT LUA_FOUND)
25939ee7a7aSBaptiste Daroussin	ELSE(ENABLE_LUAJIT MATCHES "ON")
26039ee7a7aSBaptiste Daroussin		FindLua(VERSION_MAJOR "5" VERSION_MINOR "2" ROOT "${LUA_ROOT}")
26139ee7a7aSBaptiste Daroussin		IF(NOT LUA_FOUND)
26239ee7a7aSBaptiste Daroussin			FindLua(VERSION_MAJOR "5" VERSION_MINOR "1" ROOT "${LUA_ROOT}")
26339ee7a7aSBaptiste Daroussin		ENDIF(NOT LUA_FOUND)
26439ee7a7aSBaptiste Daroussin		IF(NOT LUA_FOUND)
26539ee7a7aSBaptiste Daroussin			MESSAGE(FATAL_ERROR "Lua not found, lua support is required")
26639ee7a7aSBaptiste Daroussin		ELSE(NOT LUA_FOUND)
26739ee7a7aSBaptiste Daroussin			INCLUDE_DIRECTORIES("${LUA_INCLUDE_DIR}")
26839ee7a7aSBaptiste Daroussin		ENDIF(NOT LUA_FOUND)
26939ee7a7aSBaptiste Daroussin	ENDIF(ENABLE_LUAJIT MATCHES "ON")
27039ee7a7aSBaptiste Daroussin	SET(UCL_LUA_SRC lua/lua_ucl.c)
27139ee7a7aSBaptiste Daroussin	ADD_LIBRARY(lua-ucl ${LIB_TYPE} ${UCL_LUA_SRC})
272*a0409676SBaptiste Daroussin	ADD_LIBRARY(ucl::lua ALIAS lua-ucl)
27339ee7a7aSBaptiste Daroussin	IF(ENABLE_LUAJIT MATCHES "ON")
27439ee7a7aSBaptiste Daroussin		TARGET_LINK_LIBRARIES(lua-ucl "${LUAJIT_LIBRARY}")
27539ee7a7aSBaptiste Daroussin	ELSE(ENABLE_LUAJIT MATCHES "ON")
27639ee7a7aSBaptiste Daroussin		TARGET_LINK_LIBRARIES(lua-ucl "${LUA_LIBRARY}")
27739ee7a7aSBaptiste Daroussin	ENDIF(ENABLE_LUAJIT MATCHES "ON")
27839ee7a7aSBaptiste Daroussin	TARGET_LINK_LIBRARIES(lua-ucl ucl)
279*a0409676SBaptiste Daroussin	TARGET_INCLUDE_DIRECTORIES(lua-ucl PUBLIC include PRIVATE src uthash)
280*a0409676SBaptiste Daroussin	SET_TARGET_PROPERTIES(lua-ucl PROPERTIES
281*a0409676SBaptiste Daroussin		VERSION ${LIBUCL_VERSION}
282*a0409676SBaptiste Daroussin		SOVERSION ${LIBUCL_VERSION_MAJOR}
283*a0409676SBaptiste Daroussin		PUBLIC_HEADER include/lua_ucl.h)
284*a0409676SBaptiste Daroussin	INSTALL(TARGETS lua-ucl DESTINATION ${CMAKE_INSTALL_LIBDIR}
285*a0409676SBaptiste Daroussin			PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
28639ee7a7aSBaptiste DaroussinENDIF()
28739ee7a7aSBaptiste Daroussin
28839ee7a7aSBaptiste DaroussinIF(HAVE_FETCH_H)
28939ee7a7aSBaptiste Daroussin    TARGET_LINK_LIBRARIES(ucl fetch)
29039ee7a7aSBaptiste DaroussinELSE(HAVE_FETCH_H)
29139ee7a7aSBaptiste Daroussin    IF(CURL_FOUND)
29239ee7a7aSBaptiste Daroussin        TARGET_LINK_LIBRARIES(ucl ${CURL_LIBRARIES})
29339ee7a7aSBaptiste Daroussin    ENDIF(CURL_FOUND)
29439ee7a7aSBaptiste DaroussinENDIF(HAVE_FETCH_H)
29539ee7a7aSBaptiste DaroussinIF(ENABLE_URL_SIGN MATCHES "ON")
29639ee7a7aSBaptiste Daroussin	IF(OPENSSL_FOUND)
29739ee7a7aSBaptiste Daroussin		TARGET_LINK_LIBRARIES(ucl ${OPENSSL_LIBRARIES})
29839ee7a7aSBaptiste Daroussin	ENDIF(OPENSSL_FOUND)
29939ee7a7aSBaptiste DaroussinENDIF(ENABLE_URL_SIGN MATCHES "ON")
300*a0409676SBaptiste Daroussin
301*a0409676SBaptiste DaroussinIF(UNIX)
302*a0409676SBaptiste Daroussin    TARGET_LINK_LIBRARIES(ucl -lm)
303*a0409676SBaptiste DaroussinENDIF(UNIX)
304*a0409676SBaptiste Daroussin
305*a0409676SBaptiste DaroussinSET_TARGET_PROPERTIES(ucl PROPERTIES
306*a0409676SBaptiste Daroussin	PUBLIC_HEADER "${UCLHDR}")
307*a0409676SBaptiste Daroussin
308*a0409676SBaptiste DaroussinINSTALL(TARGETS ucl DESTINATION ${CMAKE_INSTALL_LIBDIR}
309*a0409676SBaptiste Daroussin		PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
310*a0409676SBaptiste Daroussin
311*a0409676SBaptiste DaroussinIF(ENABLE_UTILS MATCHES "ON")
312*a0409676SBaptiste Daroussin    ADD_SUBDIRECTORY(utils)
313*a0409676SBaptiste DaroussinENDIF()
314*a0409676SBaptiste Daroussin
315