aboutsummaryrefslogtreecommitdiff
path: root/utils.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'utils.cmake')
-rw-r--r--utils.cmake84
1 files changed, 0 insertions, 84 deletions
diff --git a/utils.cmake b/utils.cmake
deleted file mode 100644
index ddda380..0000000
--- a/utils.cmake
+++ /dev/null
@@ -1,84 +0,0 @@
-include(CheckCXXCompilerFlag)
-# cmake-format: off
-# Adds a target for an executable
-#
-# Arguments:
-# NAME: Name of the executatble
-# LIB: Library that executable depends on
-# SOURCES: Source files
-#
-# Optional Arguments:
-# INCLUDES: Include paths
-# LIBS: Additional libraries
-# FUZZER: flag to specify if the target is a fuzzer binary
-# cmake-format: on
-
-# Adds compiler options for all targets
-function(libultrahdr_add_compile_options)
- if(DEFINED SANITIZE)
- set(CMAKE_REQUIRED_FLAGS -fsanitize=${SANITIZE})
- check_cxx_compiler_flag(-fsanitize=${SANITIZE} COMPILER_HAS_SANITIZER)
- unset(CMAKE_REQUIRED_FLAGS)
-
- if(NOT COMPILER_HAS_SANITIZER)
- message(
- FATAL_ERROR "ERROR: Compiler doesn't support -fsanitize=${SANITIZE}")
- return()
- endif()
- add_compile_options(-fno-omit-frame-pointer -fsanitize=${SANITIZE})
- endif()
-
-endfunction()
-
-function(libultrahdr_add_executable NAME LIB)
- set(multi_value_args SOURCES INCLUDES LIBS)
- set(optional_args FUZZER)
- cmake_parse_arguments(ARG "${optional_args}" "${single_value_args}"
- "${multi_value_args}" ${ARGN})
-
- # Check if compiler supports -fsanitize=fuzzer. If not, skip building fuzzer
- # binary
- if(ARG_FUZZER)
- set(CMAKE_REQUIRED_FLAGS -fsanitize=fuzzer-no-link)
- check_cxx_compiler_flag(-fsanitize=fuzzer-no-link
- COMPILER_HAS_SANITIZE_FUZZER)
- unset(CMAKE_REQUIRED_FLAGS)
- if(NOT COMPILER_HAS_SANITIZE_FUZZER)
- message("Compiler doesn't support -fsanitize=fuzzer. Skipping ${NAME}")
- return()
- endif()
- endif()
-
- add_executable(${NAME} ${ARG_SOURCES})
- target_include_directories(${NAME} PRIVATE ${ARG_INCLUDES})
- add_dependencies(${NAME} ${LIB} ${ARG_LIBS})
-
- target_link_libraries(${NAME} ${LIB} ${ARG_LIBS})
- if(ARG_FUZZER)
- if(DEFINED ENV{LIB_FUZZING_ENGINE})
- set_target_properties(${NAME} PROPERTIES LINK_FLAGS
- $ENV{LIB_FUZZING_ENGINE})
- elseif(DEFINED SANITIZE)
- set_target_properties(${NAME} PROPERTIES LINK_FLAGS
- -fsanitize=fuzzer,${SANITIZE})
- else()
- set_target_properties(${NAME} PROPERTIES LINK_FLAGS -fsanitize=fuzzer)
- endif()
- else()
- if(DEFINED SANITIZE)
- set_target_properties(${NAME} PROPERTIES LINK_FLAGS
- -fsanitize=${SANITIZE})
- endif()
- endif()
-endfunction()
-
-# cmake-format: off
-# Adds a target for a fuzzer binary
-# Calls libultrahdr_add_executable with all arguments with FUZZER set to 1
-# Arguments:
-# Refer to libultrahdr_add_executable's arguments
-# cmake-format: on
-
-function(libultrahdr_add_fuzzer NAME LIB)
- libultrahdr_add_executable(${NAME} ${LIB} FUZZER 1 ${ARGV})
-endfunction()