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