cmake_minimum_required(VERSION 3.5) project(tfe) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) include(Version) include(Package) add_definitions(-D_GNU_SOURCE) set(CMAKE_CXX_STANDARD 11) set(CMAKE_C_STANDARD 11) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE RelWithDebInfo) endif() if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set (CMAKE_INSTALL_PREFIX "/opt/tsg/tfe" CACHE PATH "default install path" FORCE ) endif() # Global compile options option(ENABLE_PIC "Generate position independent code (necessary for shared libraries)" TRUE) option(ENABLE_WARNING_ALL "Enable all optional warnings which are desirable for normal code" TRUE) if(NOT ASAN_OPTION) option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" FALSE) else() option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" TRUE) endif() option(ENABLE_SANITIZE_THREAD "Enable ThreadSanitizer" FALSE) # Plugins option(ENABLE_PLUGIN_HTTP "Enable HTTP support" TRUE) option(ENABLE_PLUGIN_TRAFFIC_MIRROR "Enable traffic mirror" TRUE) option(ENABLE_PLUGIN_DOH "Enable Doh business" TRUE) option(ENABLE_PLUGIN_PANGU_HTTP "Enable Pangu-HTTP business" TRUE) option(ENABLE_PLUGIN_HTTP2 "Enable HTTP2 business" TRUE) option(ENABLE_PLUGIN_SSL_POLICY "Enable SSL policy support" TRUE) if(ENABLE_PIC) set(CMAKE_POSITION_INDEPENDENT_CODE 1) endif() if(ENABLE_WARNING_ALL) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") endif() if(ENABLE_SANITIZE_ADDRESS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") elseif(ENABLE_SANITIZE_THREAD) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fno-omit-frame-pointer") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") endif() if(ENABLE_SANITIZE_ADDRESS AND ENABLE_SANITIZE_THREAD) message(WARNING "Both ENABLE_SANITIZE_ADDRESS and ENABLE_SANITIZE_THREAD set, only ENABLE_SANITIZE_ADDRESS effected.") endif() add_custom_target("install-program" COMMAND ${CMAKE_COMMAND} ARGS -DCOMPONENT=Program -P cmake_install.cmake) add_custom_target("install-profile" COMMAND ${CMAKE_COMMAND} ARGS -DCOMPONENT=Profile -P cmake_install.cmake) enable_testing() add_subdirectory(conf) add_subdirectory(resource) add_subdirectory(vendor) add_subdirectory(common) add_subdirectory(plugin) add_subdirectory(platform) add_subdirectory(cache) add_subdirectory(script)