| # |
| # Copyright (c) 2022-present, IO Visor Project |
| # All rights reserved. |
| # |
| # This source code is licensed in accordance with the terms specified in |
| # the LICENSE file found in the root directory of this source tree. |
| # |
| |
| include("CheckLibraryExists") |
| include("GNUInstallDirs") |
| |
| find_path(UBPF_ELF_H_PATH "elf.h" NO_CACHE) |
| if(UBPF_ELF_H_PATH) |
| set(UBPF_HAS_ELF_H true) |
| |
| else() |
| message(WARNING "ubpf - elf.h was not found, disabling ELF support") |
| endif() |
| |
| configure_file( |
| ubpf_config.h.inc |
| "${CMAKE_CURRENT_BINARY_DIR}/ubpf_config.h" |
| ) |
| |
| set(public_header_list |
| inc/ubpf.h |
| "${CMAKE_CURRENT_BINARY_DIR}/ubpf_config.h" |
| ) |
| |
| add_library("ubpf" |
| ${public_header_list} |
| |
| ebpf.h |
| ubpf_int.h |
| ubpf_jit_arm64.c |
| ubpf_jit.c |
| ubpf_jit_x86_64.c |
| ubpf_jit_x86_64.h |
| ubpf_loader.c |
| ubpf_vm.c |
| ) |
| |
| target_link_libraries("ubpf" |
| PRIVATE |
| "ubpf_settings" |
| ) |
| |
| target_include_directories("ubpf" PUBLIC |
| $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/inc> |
| $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> |
| $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> |
| ) |
| |
| set_target_properties("ubpf" PROPERTIES |
| PUBLIC_HEADER |
| "${public_header_list}" |
| ) |
| |
| if(PLATFORM_LINUX) |
| check_library_exists("m" "pow" "" "libm_found") |
| |
| if(libm_found) |
| target_link_libraries("ubpf" |
| PUBLIC |
| "m" |
| ) |
| endif() |
| endif() |
| |
| if(UBPF_ENABLE_TESTS) |
| add_executable("ubpf_test" |
| test.c |
| ) |
| |
| target_link_libraries("ubpf_test" |
| PRIVATE |
| "ubpf_settings" |
| "ubpf" |
| ) |
| endif() |
| |
| add_subdirectory("compat") |
| |
| if(TARGET "ubpf_compat") |
| target_link_libraries("ubpf" PRIVATE |
| $<BUILD_INTERFACE:ubpf_compat> |
| ) |
| |
| if(UBPF_ENABLE_TESTS) |
| target_link_libraries("ubpf_test" PRIVATE |
| $<BUILD_INTERFACE:ubpf_compat> |
| ) |
| endif() |
| |
| endif() |
| |
| |
| if(UBPF_ENABLE_INSTALL) |
| install( |
| TARGETS |
| "ubpf" |
| |
| EXPORT |
| "ubpf" |
| |
| LIBRARY DESTINATION |
| "${CMAKE_INSTALL_LIBDIR}" |
| |
| PUBLIC_HEADER DESTINATION |
| "${CMAKE_INSTALL_INCLUDEDIR}" |
| ) |
| |
| install( |
| EXPORT |
| "ubpf" |
| |
| DESTINATION |
| "${CMAKE_INSTALL_LIBDIR}/cmake/ubpf" |
| |
| NAMESPACE |
| "ubpf::" |
| |
| FILE |
| "ubpfConfig.cmake" |
| ) |
| endif() |