Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reflow src/CMakeLists.txt in logical groups #8383

Merged
merged 3 commits into from
Aug 9, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 57 additions & 48 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,25 @@
add_library(Halide)
add_library(Halide::Halide ALIAS Halide)

##
# CodeGen backends
# Language standard
target_compile_features(Halide PUBLIC cxx_std_17)

# LLVM
foreach (backend IN LISTS Halide_LLVM_COMPONENTS)
string(TOUPPER "WITH_${backend}" definition)
target_compile_definitions(Halide PRIVATE "${definition}")
target_link_libraries(Halide PRIVATE Halide_LLVM::${backend})
endforeach ()
# Inform the sources if we're building a static or shared library
if (NOT BUILD_SHARED_LIBS)
target_compile_definitions(Halide PRIVATE Halide_STATIC_DEFINE)
endif ()

# Set the (shared) library version
set(Halide_SOVERSION_OVERRIDE "${Halide_VERSION_MAJOR}"
CACHE STRING "SOVERSION to set for custom Halide packaging")
mark_as_advanced(Halide_SOVERSION_OVERRIDE)

set_target_properties(Halide PROPERTIES
VERSION "${Halide_VERSION}"
SOVERSION "${Halide_SOVERSION_OVERRIDE}")

# Always build with PIC, even when static
set_target_properties(Halide PROPERTIES POSITION_INDEPENDENT_CODE ON)

##
# Lists of source files. Keep ALL lists sorted in alphabetical order.
Expand Down Expand Up @@ -462,6 +472,34 @@ target_sources(
FILES "${Halide_BINARY_DIR}/include/Halide.h"
)

##
# CodeGen backends
##

# LLVM backends
foreach (backend IN LISTS Halide_LLVM_COMPONENTS)
string(TOUPPER "WITH_${backend}" definition)
target_compile_definitions(Halide PRIVATE "${definition}")
target_link_libraries(Halide PRIVATE Halide_LLVM::${backend})
endforeach ()

# GPU backends
find_package(
SPIRV-Headers 1.5.5 REQUIRED
HINTS "${Halide_SOURCE_DIR}/dependencies/spirv"
)

target_link_libraries(
Halide PRIVATE "$<BUILD_LOCAL_INTERFACE:SPIRV-Headers::SPIRV-Headers>"
)

target_compile_definitions(Halide PRIVATE WITH_D3D12)
target_compile_definitions(Halide PRIVATE WITH_METAL)
target_compile_definitions(Halide PRIVATE WITH_OPENCL)
target_compile_definitions(Halide PRIVATE WITH_SPIRV)
target_compile_definitions(Halide PRIVATE WITH_VULKAN)
target_compile_definitions(Halide PRIVATE WITH_WEBGPU)

##
# Flatbuffers and Serialization dependencies.
##
Expand Down Expand Up @@ -516,29 +554,6 @@ if (WITH_SERIALIZATION_JIT_ROUNDTRIP_TESTING)
target_compile_definitions(Halide PRIVATE WITH_SERIALIZATION_JIT_ROUNDTRIP_TESTING)
endif ()

target_compile_features(Halide PUBLIC cxx_std_17)
if (NOT BUILD_SHARED_LIBS)
target_compile_definitions(Halide PRIVATE Halide_STATIC_DEFINE)
endif ()

include(TargetExportScript)
## TODO: implement something similar for Windows/link.exe
# https://github.com/halide/Halide/issues/4651
target_export_script(Halide
APPLE_LD "${CMAKE_CURRENT_LIST_DIR}/exported_symbols.osx"
GNU_LD "${CMAKE_CURRENT_LIST_DIR}/exported_symbols.ldscript")

set(Halide_SOVERSION_OVERRIDE "${Halide_VERSION_MAJOR}"
CACHE STRING "SOVERSION to set for custom Halide packaging")
mark_as_advanced(Halide_SOVERSION_OVERRIDE)

set_target_properties(Halide PROPERTIES
VERSION "${Halide_VERSION}"
SOVERSION "${Halide_SOVERSION_OVERRIDE}")

# Always build with PIC, even when static
set_target_properties(Halide PROPERTIES POSITION_INDEPENDENT_CODE ON)

# Note that we (deliberately) redeclare these versions here, even though the macros
# with identical versions are expected to be defined in source; this allows us to
# ensure that the versions defined between all build systems are identical.
Expand Down Expand Up @@ -592,6 +607,17 @@ elseif (Halide_WASM_BACKEND)
message(FATAL_ERROR "Unknown Halide_WASM_BACKEND `${Halide_WASM_BACKEND}`")
endif ()

##
# Attach symbol export scripts
##

## TODO: implement something similar for Windows/link.exe
# https://github.com/halide/Halide/issues/4651
include(TargetExportScript)
target_export_script(Halide
APPLE_LD "${CMAKE_CURRENT_LIST_DIR}/exported_symbols.osx"
GNU_LD "${CMAKE_CURRENT_LIST_DIR}/exported_symbols.ldscript")

##
# Set compiler options for libHalide
##
Expand Down Expand Up @@ -647,23 +673,6 @@ else ()
)
endif ()

##
# GPU CodeGen backends

find_package(
SPIRV-Headers 1.5.5 REQUIRED
HINTS "${Halide_SOURCE_DIR}/dependencies/spirv"
)

target_link_libraries(Halide PRIVATE "$<BUILD_LOCAL_INTERFACE:SPIRV-Headers::SPIRV-Headers>")

target_compile_definitions(Halide PRIVATE WITH_D3D12)
target_compile_definitions(Halide PRIVATE WITH_METAL)
target_compile_definitions(Halide PRIVATE WITH_OPENCL)
target_compile_definitions(Halide PRIVATE WITH_SPIRV)
target_compile_definitions(Halide PRIVATE WITH_VULKAN)
target_compile_definitions(Halide PRIVATE WITH_WEBGPU)

##
# Add autoschedulers to the build.
##
Expand Down