# This file is automatically generated from cmake.toml - DO NOT EDIT
# See https://github.com/build-cpp/cmkr for more information

cmake_minimum_required(VERSION 3.27)

if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
	message(FATAL_ERROR "In-tree builds are not supported. Run CMake from a separate directory: cmake -B build")
endif()

set(CMKR_ROOT_PROJECT OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
	set(CMKR_ROOT_PROJECT ON)

	# Bootstrap cmkr and automatically regenerate CMakeLists.txt
	include("cmake/cmkr.cmake" OPTIONAL RESULT_VARIABLE CMKR_INCLUDE_RESULT)
	if(CMKR_INCLUDE_RESULT)
		cmkr()
	endif()

	# Enable folder support
	set_property(GLOBAL PROPERTY USE_FOLDERS ON)

	# Create a configure-time dependency on cmake.toml to improve IDE support
	set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS cmake.toml)
endif()

# Variables
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

project(llvm-nanobind)

# Packages
find_package(Python 3.12 REQUIRED
	COMPONENTS
		Interpreter
		Development.Module
		Development.SABIModule
)

find_package(nanobind-wrapper REQUIRED)

find_package(LLVM-Wrapper REQUIRED)

# Target: llvm
set(llvm_SOURCES
	cmake.toml
	"src/llvm-nanobind.cpp"
)

nanobind_add_typed_module(llvm ${llvm_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${llvm_SOURCES})

target_compile_features(llvm PUBLIC
	cxx_std_20
)

target_compile_options(llvm PUBLIC
	"$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/Od>"
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"llvm\" does not exist!")
endif()

target_link_libraries(llvm PUBLIC
	LLVM-C-Wrapper
)

# Target: llvm-c-test-vendored
set(llvm-c-test-vendored_SOURCES
	cmake.toml
	"llvm-c/llvm-c-test/attributes.c"
	"llvm-c/llvm-c-test/calc.c"
	"llvm-c/llvm-c-test/debuginfo.c"
	"llvm-c/llvm-c-test/diagnostic.c"
	"llvm-c/llvm-c-test/disassemble.c"
	"llvm-c/llvm-c-test/echo.cpp"
	"llvm-c/llvm-c-test/helpers.c"
	"llvm-c/llvm-c-test/include-all.c"
	"llvm-c/llvm-c-test/llvm-c-test.h"
	"llvm-c/llvm-c-test/main.c"
	"llvm-c/llvm-c-test/metadata.c"
	"llvm-c/llvm-c-test/module.c"
	"llvm-c/llvm-c-test/object.c"
	"llvm-c/llvm-c-test/targets.c"
)

add_executable(llvm-c-test-vendored)

target_sources(llvm-c-test-vendored PRIVATE ${llvm-c-test-vendored_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${llvm-c-test-vendored_SOURCES})

target_compile_features(llvm-c-test-vendored PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"llvm-c-test-vendored\" does not exist!")
endif()

target_link_libraries(llvm-c-test-vendored PRIVATE
	LLVM-C-Wrapper
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"llvm-c-test-vendored\" does not exist!")
endif()

target_link_libraries(llvm-c-test-vendored PRIVATE
	LLVM-Wrapper
)

set_target_properties(llvm-c-test-vendored PROPERTIES
	OUTPUT_NAME
		llvm-c-test
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT llvm-c-test-vendored)
endif()

# Target: test_context
set(test_context_SOURCES
	cmake.toml
	"tests/test_context.cpp"
)

add_executable(test_context)

target_sources(test_context PRIVATE ${test_context_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_context_SOURCES})

target_compile_features(test_context PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_context\" does not exist!")
endif()

target_link_libraries(test_context PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_context)
endif()

# Target: test_module
set(test_module_SOURCES
	cmake.toml
	"tests/test_module.cpp"
)

add_executable(test_module)

target_sources(test_module PRIVATE ${test_module_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_module_SOURCES})

target_compile_features(test_module PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_module\" does not exist!")
endif()

target_link_libraries(test_module PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_module)
endif()

# Target: test_types
set(test_types_SOURCES
	cmake.toml
	"tests/test_types.cpp"
)

add_executable(test_types)

target_sources(test_types PRIVATE ${test_types_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_types_SOURCES})

target_compile_features(test_types PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_types\" does not exist!")
endif()

target_link_libraries(test_types PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_types)
endif()

# Target: test_function
set(test_function_SOURCES
	cmake.toml
	"tests/test_function.cpp"
)

add_executable(test_function)

target_sources(test_function PRIVATE ${test_function_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_function_SOURCES})

target_compile_features(test_function PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_function\" does not exist!")
endif()

target_link_libraries(test_function PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_function)
endif()

# Target: test_basic_block
set(test_basic_block_SOURCES
	cmake.toml
	"tests/test_basic_block.cpp"
)

add_executable(test_basic_block)

target_sources(test_basic_block PRIVATE ${test_basic_block_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_basic_block_SOURCES})

target_compile_features(test_basic_block PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_basic_block\" does not exist!")
endif()

target_link_libraries(test_basic_block PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_basic_block)
endif()

# Target: test_builder_arithmetic
set(test_builder_arithmetic_SOURCES
	cmake.toml
	"tests/test_builder_arithmetic.cpp"
)

add_executable(test_builder_arithmetic)

target_sources(test_builder_arithmetic PRIVATE ${test_builder_arithmetic_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_builder_arithmetic_SOURCES})

target_compile_features(test_builder_arithmetic PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_builder_arithmetic\" does not exist!")
endif()

target_link_libraries(test_builder_arithmetic PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_builder_arithmetic)
endif()

# Target: test_builder_memory
set(test_builder_memory_SOURCES
	cmake.toml
	"tests/test_builder_memory.cpp"
)

add_executable(test_builder_memory)

target_sources(test_builder_memory PRIVATE ${test_builder_memory_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_builder_memory_SOURCES})

target_compile_features(test_builder_memory PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_builder_memory\" does not exist!")
endif()

target_link_libraries(test_builder_memory PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_builder_memory)
endif()

# Target: test_builder_control_flow
set(test_builder_control_flow_SOURCES
	cmake.toml
	"tests/test_builder_control_flow.cpp"
)

add_executable(test_builder_control_flow)

target_sources(test_builder_control_flow PRIVATE ${test_builder_control_flow_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_builder_control_flow_SOURCES})

target_compile_features(test_builder_control_flow PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_builder_control_flow\" does not exist!")
endif()

target_link_libraries(test_builder_control_flow PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_builder_control_flow)
endif()

# Target: test_builder_casts
set(test_builder_casts_SOURCES
	cmake.toml
	"tests/test_builder_casts.cpp"
)

add_executable(test_builder_casts)

target_sources(test_builder_casts PRIVATE ${test_builder_casts_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_builder_casts_SOURCES})

target_compile_features(test_builder_casts PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_builder_casts\" does not exist!")
endif()

target_link_libraries(test_builder_casts PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_builder_casts)
endif()

# Target: test_builder_cmp
set(test_builder_cmp_SOURCES
	cmake.toml
	"tests/test_builder_cmp.cpp"
)

add_executable(test_builder_cmp)

target_sources(test_builder_cmp PRIVATE ${test_builder_cmp_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_builder_cmp_SOURCES})

target_compile_features(test_builder_cmp PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_builder_cmp\" does not exist!")
endif()

target_link_libraries(test_builder_cmp PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_builder_cmp)
endif()

# Target: test_constants
set(test_constants_SOURCES
	cmake.toml
	"tests/test_constants.cpp"
)

add_executable(test_constants)

target_sources(test_constants PRIVATE ${test_constants_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_constants_SOURCES})

target_compile_features(test_constants PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_constants\" does not exist!")
endif()

target_link_libraries(test_constants PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_constants)
endif()

# Target: test_globals
set(test_globals_SOURCES
	cmake.toml
	"tests/test_globals.cpp"
)

add_executable(test_globals)

target_sources(test_globals PRIVATE ${test_globals_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_globals_SOURCES})

target_compile_features(test_globals PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_globals\" does not exist!")
endif()

target_link_libraries(test_globals PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_globals)
endif()

# Target: test_phi
set(test_phi_SOURCES
	cmake.toml
	"tests/test_phi.cpp"
)

add_executable(test_phi)

target_sources(test_phi PRIVATE ${test_phi_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_phi_SOURCES})

target_compile_features(test_phi PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_phi\" does not exist!")
endif()

target_link_libraries(test_phi PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_phi)
endif()

# Target: test_factorial
set(test_factorial_SOURCES
	cmake.toml
	"tests/test_factorial.cpp"
)

add_executable(test_factorial)

target_sources(test_factorial PRIVATE ${test_factorial_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_factorial_SOURCES})

target_compile_features(test_factorial PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_factorial\" does not exist!")
endif()

target_link_libraries(test_factorial PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_factorial)
endif()

# Target: test_struct
set(test_struct_SOURCES
	cmake.toml
	"tests/test_struct.cpp"
)

add_executable(test_struct)

target_sources(test_struct PRIVATE ${test_struct_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_struct_SOURCES})

target_compile_features(test_struct PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_struct\" does not exist!")
endif()

target_link_libraries(test_struct PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_struct)
endif()

# Target: test_predecessors
set(test_predecessors_SOURCES
	cmake.toml
	"tests/test_predecessors.cpp"
)

add_executable(test_predecessors)

target_sources(test_predecessors PRIVATE ${test_predecessors_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_predecessors_SOURCES})

target_compile_features(test_predecessors PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_predecessors\" does not exist!")
endif()

target_link_libraries(test_predecessors PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_predecessors)
endif()

# Target: test_target_codegen
set(test_target_codegen_SOURCES
	cmake.toml
	"tests/test_target_codegen.cpp"
)

add_executable(test_target_codegen)

target_sources(test_target_codegen PRIVATE ${test_target_codegen_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_target_codegen_SOURCES})

target_compile_features(test_target_codegen PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_target_codegen\" does not exist!")
endif()

target_link_libraries(test_target_codegen PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_target_codegen)
endif()

# Target: test_bitcode_linker
set(test_bitcode_linker_SOURCES
	cmake.toml
	"tests/test_bitcode_linker.cpp"
)

add_executable(test_bitcode_linker)

target_sources(test_bitcode_linker PRIVATE ${test_bitcode_linker_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_bitcode_linker_SOURCES})

target_compile_features(test_bitcode_linker PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_bitcode_linker\" does not exist!")
endif()

target_link_libraries(test_bitcode_linker PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_bitcode_linker)
endif()

# Target: test_passbuilder
set(test_passbuilder_SOURCES
	cmake.toml
	"tests/test_passbuilder.cpp"
)

add_executable(test_passbuilder)

target_sources(test_passbuilder PRIVATE ${test_passbuilder_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_passbuilder_SOURCES})

target_compile_features(test_passbuilder PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_passbuilder\" does not exist!")
endif()

target_link_libraries(test_passbuilder PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_passbuilder)
endif()

# Target: test_call_conv
set(test_call_conv_SOURCES
	cmake.toml
	"tests/test_call_conv.cpp"
)

add_executable(test_call_conv)

target_sources(test_call_conv PRIVATE ${test_call_conv_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_call_conv_SOURCES})

target_compile_features(test_call_conv PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_call_conv\" does not exist!")
endif()

target_link_libraries(test_call_conv PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_call_conv)
endif()

# Target: test_function_extended
set(test_function_extended_SOURCES
	cmake.toml
	"tests/test_function_extended.cpp"
)

add_executable(test_function_extended)

target_sources(test_function_extended PRIVATE ${test_function_extended_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_function_extended_SOURCES})

target_compile_features(test_function_extended PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_function_extended\" does not exist!")
endif()

target_link_libraries(test_function_extended PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_function_extended)
endif()

# Target: test_symbol_size_crash
set(test_symbol_size_crash_SOURCES
	cmake.toml
	"tests/regressions/test_symbol_size_crash.cpp"
)

add_executable(test_symbol_size_crash)

target_sources(test_symbol_size_crash PRIVATE ${test_symbol_size_crash_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${test_symbol_size_crash_SOURCES})

target_compile_features(test_symbol_size_crash PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-C-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-C-Wrapper\" referenced by \"test_symbol_size_crash\" does not exist!")
endif()

target_link_libraries(test_symbol_size_crash PRIVATE
	LLVM-C-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT test_symbol_size_crash)
endif()

# Target: mba_sub
set(mba_sub_SOURCES
	cmake.toml
	"tools/obfuscation/mba_sub.cpp"
)

add_executable(mba_sub)

target_sources(mba_sub PRIVATE ${mba_sub_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${mba_sub_SOURCES})

target_compile_features(mba_sub PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"mba_sub\" does not exist!")
endif()

target_link_libraries(mba_sub PRIVATE
	LLVM-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT mba_sub)
endif()

# Target: bb_split
set(bb_split_SOURCES
	cmake.toml
	"tools/obfuscation/bb_split.cpp"
)

add_executable(bb_split)

target_sources(bb_split PRIVATE ${bb_split_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${bb_split_SOURCES})

target_compile_features(bb_split PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"bb_split\" does not exist!")
endif()

target_link_libraries(bb_split PRIVATE
	LLVM-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT bb_split)
endif()

# Target: indirect_branch
set(indirect_branch_SOURCES
	cmake.toml
	"tools/obfuscation/indirect_branch.cpp"
)

add_executable(indirect_branch)

target_sources(indirect_branch PRIVATE ${indirect_branch_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${indirect_branch_SOURCES})

target_compile_features(indirect_branch PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"indirect_branch\" does not exist!")
endif()

target_link_libraries(indirect_branch PRIVATE
	LLVM-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT indirect_branch)
endif()

# Target: control_flow_flatten
set(control_flow_flatten_SOURCES
	cmake.toml
	"tools/obfuscation/control_flow_flatten.cpp"
)

add_executable(control_flow_flatten)

target_sources(control_flow_flatten PRIVATE ${control_flow_flatten_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${control_flow_flatten_SOURCES})

target_compile_features(control_flow_flatten PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"control_flow_flatten\" does not exist!")
endif()

target_link_libraries(control_flow_flatten PRIVATE
	LLVM-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT control_flow_flatten)
endif()

# Target: indirect_branch_enc
set(indirect_branch_enc_SOURCES
	cmake.toml
	"tools/obfuscation/indirect_branch_enc.cpp"
)

add_executable(indirect_branch_enc)

target_sources(indirect_branch_enc PRIVATE ${indirect_branch_enc_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${indirect_branch_enc_SOURCES})

target_compile_features(indirect_branch_enc PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"indirect_branch_enc\" does not exist!")
endif()

target_link_libraries(indirect_branch_enc PRIVATE
	LLVM-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT indirect_branch_enc)
endif()

# Target: string_encrypt
set(string_encrypt_SOURCES
	cmake.toml
	"tools/obfuscation/string_encrypt.cpp"
)

add_executable(string_encrypt)

target_sources(string_encrypt PRIVATE ${string_encrypt_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${string_encrypt_SOURCES})

target_compile_features(string_encrypt PRIVATE
	cxx_std_20
)

if(NOT TARGET LLVM-Wrapper)
	message(FATAL_ERROR "Target \"LLVM-Wrapper\" referenced by \"string_encrypt\" does not exist!")
endif()

target_link_libraries(string_encrypt PRIVATE
	LLVM-Wrapper
)

get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
	set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT string_encrypt)
endif()
