1 cmake_minimum_required(VERSION 2.6) 2 3 INCLUDE(CheckIncludeFiles) 4 5 PROJECT(uclient C) 6 ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3) 7 IF(CMAKE_C_COMPILER_VERSION VERSION_GREATER 6) 8 ADD_DEFINITIONS(-Wextra -Werror=implicit-function-declaration) 9 ADD_DEFINITIONS(-Wformat -Werror=format-security -Werror=format-nonliteral) 10 ENDIF() 11 ADD_DEFINITIONS(-Wno-unused-parameter -Wmissing-declarations) 12 13 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") 14 15 FIND_PATH(ubox_include_dir libubox/ustream-ssl.h) 16 INCLUDE_DIRECTORIES(${ubox_include_dir}) 17 OPTION(BUILD_UCODE "build ucode plugin" ON) 18 19 IF(BUILD_STATIC) 20 FIND_LIBRARY(ubox_library NAMES ubox.a) 21 ELSE(BUILD_STATIC) 22 FIND_LIBRARY(ubox_library NAMES ubox) 23 ENDIF(BUILD_STATIC) 24 25 IF(APPLE) 26 SET(UCODE_MODULE_LINK_OPTIONS "LINKER:-undefined,dynamic_lookup") 27 ENDIF() 28 29 SET(LIB_SOURCES uclient.c uclient-http.c uclient-utils.c) 30 ADD_LIBRARY(uclient SHARED ${LIB_SOURCES}) 31 TARGET_LINK_LIBRARIES(uclient ${ubox_library} dl) 32 33 SET(CLI_SOURCES uclient-fetch.c progress.c) 34 ADD_EXECUTABLE(uclient-fetch ${CLI_SOURCES}) 35 TARGET_LINK_LIBRARIES(uclient-fetch uclient) 36 37 IF(UNIT_TESTING) 38 ADD_DEFINITIONS(-DUNIT_TESTING) 39 ENABLE_TESTING() 40 ADD_SUBDIRECTORY(tests) 41 42 IF(CMAKE_C_COMPILER_ID STREQUAL "Clang") 43 ADD_LIBRARY(uclient-san SHARED ${LIB_SOURCES}) 44 TARGET_COMPILE_OPTIONS(uclient-san PRIVATE -g -fno-omit-frame-pointer -fsanitize=undefined,address,leak -fno-sanitize-recover=all) 45 TARGET_LINK_OPTIONS(uclient-san PRIVATE -fsanitize=undefined,address,leak) 46 TARGET_LINK_LIBRARIES(uclient-san ${ubox_library} dl) 47 48 ADD_EXECUTABLE(uclient-fetch-san ${CLI_SOURCES}) 49 TARGET_COMPILE_OPTIONS(uclient-fetch-san PRIVATE -g -fno-omit-frame-pointer -fsanitize=undefined,address,leak -fno-sanitize-recover=all) 50 TARGET_LINK_OPTIONS(uclient-fetch-san PRIVATE -fsanitize=undefined,address,leak) 51 TARGET_LINK_LIBRARIES(uclient-fetch-san uclient-san ${ubox_library} dl) 52 ENDIF() 53 ENDIF() 54 55 IF(BUILD_UCODE) 56 ADD_LIBRARY(uclient_lib MODULE ucode.c) 57 SET_TARGET_PROPERTIES(uclient_lib PROPERTIES OUTPUT_NAME uclient PREFIX "") 58 TARGET_LINK_OPTIONS(uclient_lib PRIVATE ${UCODE_MODULE_LINK_OPTIONS}) 59 TARGET_LINK_LIBRARIES(uclient_lib uclient) 60 INSTALL(TARGETS uclient_lib 61 LIBRARY DESTINATION lib/ucode 62 ) 63 ENDIF() 64 65 INSTALL(FILES uclient.h uclient-utils.h 66 DESTINATION include/libubox 67 ) 68 INSTALL(TARGETS uclient uclient-fetch 69 LIBRARY DESTINATION lib 70 RUNTIME DESTINATION bin 71 ) 72
This page was automatically generated by LXR 0.3.1. • OpenWrt