# -*- cmake -*- set(default_opsys ${CMAKE_SYSTEM_NAME}) if(default_opsys MATCHES "Linux|Android") set(default_opsys GNU/Linux) endif() set(default_machine ${CMAKE_SYSTEM_PROCESSOR}) if(default_machine MATCHES "^(amd64|AMD64)$") set(default_machine x86_64) elseif(default_machine MATCHES "^(armv6l|armv7l|armv7-a)$") set(default_machine arm) elseif(default_machine STREQUAL "ppc64") set(default_machine powerpc) elseif(default_machine STREQUAL "aarch64") set(default_machine a64) endif() set(TCF_MACHINE ${default_machine} CACHE STRING "TCF machine") set(TCF_OPSYS ${default_opsys} CACHE STRING "TCF operating system") if (NOT TCF_DIR) set(TCF_DIR ${CMAKE_CURRENT_LIST_DIR}) endif() if (NOT TCF_LIB_NAME) set(TCF_LIB_NAME tcf) endif() set(TCF_BASE_DIR ${TCF_DIR}/agent) # sources to build set(TCF_SRCS) # get all regular source files file(GLOB TCF_SRCS_REL RELATIVE ${TCF_BASE_DIR} ${TCF_BASE_DIR}/system/${TCF_OPSYS}/tcf/*.c ${TCF_BASE_DIR}/machine/${TCF_MACHINE}/tcf/*.c ${TCF_BASE_DIR}/tcf/framework/*.c ${TCF_BASE_DIR}/tcf/services/*.c ${TCF_BASE_DIR}/tcf/main/*.c ${TCF_BASE_DIR}/tcf/http/*.c) if(TCF_MACHINE STREQUAL "a64") list(APPEND TCF_SRCS_REL machine/arm/tcf/stack-crawl-arm.c) list(APPEND TCF_SRCS_REL machine/arm/tcf/disassembler-arm.c) list(APPEND TCF_SRCS_REL machine/arm/tcf/disassembler-thumb.c) endif() # remove non-library files file(GLOB TCF_MAIN_REL RELATIVE ${TCF_BASE_DIR} ${TCF_BASE_DIR}/tcf/main/main*.c) list(REMOVE_ITEM TCF_SRCS_REL ${TCF_MAIN_REL}) if(DEFINED TCF_EXTRA_DIR) foreach(extraDir ${TCF_EXTRA_DIR}) # get extra all source files file(GLOB_RECURSE TCF_EXTRA_SRCS_REL RELATIVE ${extraDir} ${extraDir}/system/${TCF_OPSYS}/tcf/*.c ${extraDir}/machine/${TCF_MACHINE}/tcf/*.c ${extraDir}/tcf/framework/*.c ${extraDir}/tcf/services/*.c ${extraDir}/tcf/main/*.c ${extraDir}/tcf/http/*.c) # Override regular files with extra files list (LENGTH TCF_EXTRA_SRCS_REL LEN_TCF_EXTRA_SRCS_REL) if (NOT LEN_TCF_EXTRA_SRCS_REL EQUAL 0) list(REMOVE_ITEM TCF_SRCS_REL ${TCF_EXTRA_SRCS_REL}) endif () foreach(file ${TCF_EXTRA_SRCS_REL}) list(APPEND TCF_SRCS ${extraDir}/${file}) endforeach(file) endforeach(extraDir) endif() foreach(file ${TCF_SRCS_REL}) list(APPEND TCF_SRCS ${TCF_BASE_DIR}/${file}) endforeach(file) if(DEFINED TCF_EXTRA_DIR) foreach(extraDir ${TCF_EXTRA_DIR}) include_directories(${extraDir} ${extraDir}/system/${TCF_OPSYS} ${extraDir}/machine/${TCF_MACHINE}) endforeach(extraDir) endif() include_directories(${TCF_BASE_DIR} ${TCF_BASE_DIR}/system/${TCF_OPSYS} ${TCF_BASE_DIR}/machine/${TCF_MACHINE}) add_library(${TCF_LIB_NAME} ${TCF_LIB_TYPE} ${TCF_SRCS}) find_package(Threads) target_link_libraries(${TCF_LIB_NAME} Threads::Threads) find_library(LIBRT rt) if(LIBRT) target_link_libraries(${TCF_LIB_NAME} ${LIBRT}) endif() find_library(LIBUUID uuid) if(LIBUUID) target_link_libraries(${TCF_LIB_NAME} ${LIBUUID}) else() target_compile_definitions(${TCF_LIB_NAME} PUBLIC USE_uuid_generate=0) endif() if(WIN32) target_link_libraries(${TCF_LIB_NAME} version.lib psapi.lib ws2_32 iphlpapi) endif() if(ANDROID) find_library(LIBLOG log) target_link_libraries(${TCF_LIB_NAME} ${LIBLOG}) endif() if(SSL_LIB_NAME) target_link_libraries(${TCF_LIB_NAME} ${SSL_LIB_NAME}) else() add_definitions("-DENABLE_SSL=0") endif() if(DEFINED TCF_PLUGIN_PATH) add_definitions(-DPATH_Plugins=${TCF_PLUGIN_PATH}) if (UNIX) target_link_libraries(${TCF_LIB_NAME} dl) endif() endif() if (LIBWEBSOCKETSDIR) find_library(LIBWEBSOCKETS NAME "websockets" PATHS ${LIBWEBSOCKETSDIR}/lib NO_DEFAULT_PATH) if (${LIBWEBSOCKETS} STREQUAL "LIBWEBSOCKETS-NOTFOUND") message(FATAL_ERROR "ERROR: Could not find libwebsockets library in directory: " ${LIBWEBSOCKETSDIR}) else() message(STATUS "Found libwebsockets library: ${LIBWEBSOCKETS}") endif() include_directories(${LIBWEBSOCKETSDIR}/include/) target_link_libraries(${TCF_LIB_NAME} ${LIBWEBSOCKETS}) add_definitions("-DENABLE_LibWebSockets=1") INCLUDE (${CMAKE_ROOT}/Modules/FindOpenSSL.cmake) if (NOT OPENSSL_FOUND) message(FATAL_ERROR "ERROR: Could not find OpenSSL!!!") endif(NOT OPENSSL_FOUND) include_directories(${OPENSSL_INCLUDE_DIR}) target_link_libraries(${TCF_LIB_NAME} ${OPENSSL_LIBRARIES}) endif()