Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2611 commits
Select commit Hold shift + click to select a range
945801e
update
ginzburg-dev Aug 23, 2025
2c968ce
Update
ginzburg-dev Aug 22, 2025
34bace2
update
ginzburg-dev Aug 23, 2025
4766adb
Update
ginzburg-dev Aug 22, 2025
d5fe0ef
update
ginzburg-dev Aug 23, 2025
5e4ec74
Update
ginzburg-dev Aug 22, 2025
5d9d06e
update
ginzburg-dev Aug 23, 2025
ab7b47a
Update
ginzburg-dev Aug 22, 2025
b1cad9e
update
ginzburg-dev Aug 23, 2025
b4b2ce6
Update
ginzburg-dev Aug 22, 2025
8651c74
update
ginzburg-dev Aug 23, 2025
481866c
Update
ginzburg-dev Aug 22, 2025
b234b8a
update
ginzburg-dev Aug 23, 2025
2741b27
Update
ginzburg-dev Aug 22, 2025
21765cd
update
ginzburg-dev Aug 23, 2025
ba6f27c
Update
ginzburg-dev Aug 22, 2025
81b2a7a
update
ginzburg-dev Aug 23, 2025
4038760
Update
ginzburg-dev Aug 22, 2025
7ce1e0b
update
ginzburg-dev Aug 23, 2025
5189e52
Update
ginzburg-dev Aug 22, 2025
5d5f71e
update
ginzburg-dev Aug 23, 2025
e4a21e1
Update
ginzburg-dev Aug 22, 2025
98cb096
update
ginzburg-dev Aug 23, 2025
d1ecf85
Update
ginzburg-dev Aug 22, 2025
de5ccde
update
ginzburg-dev Aug 23, 2025
43f2e4d
Update
ginzburg-dev Aug 22, 2025
c347471
update
ginzburg-dev Aug 23, 2025
f1f8dbf
Update
ginzburg-dev Aug 22, 2025
53b4f01
update
ginzburg-dev Aug 23, 2025
8e226f2
Update
ginzburg-dev Aug 22, 2025
4b3782d
update
ginzburg-dev Aug 23, 2025
6df6b2b
Update
ginzburg-dev Aug 22, 2025
aa6c826
update
ginzburg-dev Aug 23, 2025
b14867c
Update
ginzburg-dev Aug 22, 2025
1362c95
update
ginzburg-dev Aug 23, 2025
eb39a67
Update
ginzburg-dev Aug 22, 2025
43c0090
update
ginzburg-dev Aug 23, 2025
5fa0989
Update
ginzburg-dev Aug 22, 2025
26b7a35
update
ginzburg-dev Aug 23, 2025
8f9dbbb
Update
ginzburg-dev Aug 22, 2025
790442c
update
ginzburg-dev Aug 23, 2025
74fc79a
Update
ginzburg-dev Aug 22, 2025
4016cda
update
ginzburg-dev Aug 23, 2025
810ad35
Update
ginzburg-dev Aug 22, 2025
7fe46a2
update
ginzburg-dev Aug 23, 2025
bdbca23
Update
ginzburg-dev Aug 22, 2025
24f4584
update
ginzburg-dev Aug 23, 2025
fe51264
Update
ginzburg-dev Aug 22, 2025
e339a2f
update
ginzburg-dev Aug 23, 2025
3fd4bce
Update
ginzburg-dev Aug 22, 2025
a9ae8fb
update
ginzburg-dev Aug 23, 2025
a38d849
Update
ginzburg-dev Aug 22, 2025
60238ea
update
ginzburg-dev Aug 23, 2025
c1c1d12
Update
ginzburg-dev Aug 22, 2025
cd68380
update
ginzburg-dev Aug 23, 2025
160e87b
Update
ginzburg-dev Aug 22, 2025
83625d2
update
ginzburg-dev Aug 23, 2025
f0a80d7
Update
ginzburg-dev Aug 22, 2025
e05f883
update
ginzburg-dev Aug 23, 2025
da95dae
Update
ginzburg-dev Aug 22, 2025
ba64143
update
ginzburg-dev Aug 23, 2025
bd315a2
Update
ginzburg-dev Aug 22, 2025
0d8f9ee
update
ginzburg-dev Aug 23, 2025
ab38370
Update
ginzburg-dev Aug 22, 2025
4fe5f77
update
ginzburg-dev Aug 23, 2025
ace16c3
Update
ginzburg-dev Aug 22, 2025
ad9d07c
update
ginzburg-dev Aug 23, 2025
0521c02
Update
ginzburg-dev Aug 22, 2025
29c327e
update
ginzburg-dev Aug 23, 2025
a129194
Update
ginzburg-dev Aug 22, 2025
2884c88
update
ginzburg-dev Aug 23, 2025
58a1dd0
Update
ginzburg-dev Aug 22, 2025
8d019f1
update
ginzburg-dev Aug 23, 2025
79d047d
Update
ginzburg-dev Aug 22, 2025
ebcfb17
update
ginzburg-dev Aug 23, 2025
f559e3a
Update
ginzburg-dev Aug 22, 2025
6266bf2
update
ginzburg-dev Aug 23, 2025
e9f6a3b
Update
ginzburg-dev Aug 22, 2025
c6a24dc
update
ginzburg-dev Aug 23, 2025
d369998
Update
ginzburg-dev Aug 22, 2025
60ef1f0
update
ginzburg-dev Aug 23, 2025
60d241c
Update
ginzburg-dev Aug 22, 2025
a534ea4
update
ginzburg-dev Aug 23, 2025
f47a7ac
Update
ginzburg-dev Aug 22, 2025
b2f9ed1
update
ginzburg-dev Aug 23, 2025
eb87acb
Update
ginzburg-dev Aug 22, 2025
d9046dc
update
ginzburg-dev Aug 23, 2025
877439d
Update
ginzburg-dev Aug 22, 2025
683ebe0
update
ginzburg-dev Aug 23, 2025
3568e26
Update
ginzburg-dev Aug 22, 2025
27e362b
update
ginzburg-dev Aug 23, 2025
043c935
Update
ginzburg-dev Aug 22, 2025
8a30e75
update
ginzburg-dev Aug 23, 2025
2ab9ac6
Update
ginzburg-dev Aug 22, 2025
30e7a52
update
ginzburg-dev Aug 23, 2025
c09ebf6
Update
ginzburg-dev Aug 22, 2025
fc1a5db
update
ginzburg-dev Aug 23, 2025
e0e3e87
Update
ginzburg-dev Aug 22, 2025
15b018f
update
ginzburg-dev Aug 23, 2025
be8a360
Update
ginzburg-dev Aug 22, 2025
6b49419
update
ginzburg-dev Aug 23, 2025
917aa76
Update
ginzburg-dev Aug 22, 2025
a7908da
update
ginzburg-dev Aug 23, 2025
e89a4be
Update
ginzburg-dev Aug 22, 2025
1479aad
update
ginzburg-dev Aug 23, 2025
948f74f
Update
ginzburg-dev Aug 22, 2025
82d9196
update
ginzburg-dev Aug 23, 2025
3dc2fed
Update
ginzburg-dev Aug 22, 2025
536d0ef
update
ginzburg-dev Aug 23, 2025
cac1020
Update
ginzburg-dev Aug 22, 2025
fad3355
update
ginzburg-dev Aug 23, 2025
6ea8747
Update
ginzburg-dev Aug 22, 2025
fe8c4ef
update
ginzburg-dev Aug 23, 2025
34e6a93
Update
ginzburg-dev Aug 22, 2025
7b4da14
update
ginzburg-dev Aug 23, 2025
2bed94d
Update
ginzburg-dev Aug 22, 2025
6abd9c5
update
ginzburg-dev Aug 23, 2025
4f4068e
Update
ginzburg-dev Aug 22, 2025
7c24c0e
update
ginzburg-dev Aug 23, 2025
7c7646b
Update
ginzburg-dev Aug 22, 2025
3a9deed
update
ginzburg-dev Aug 23, 2025
d04d306
Update
ginzburg-dev Aug 22, 2025
7434f81
update
ginzburg-dev Aug 23, 2025
68ab7f1
Update
ginzburg-dev Aug 22, 2025
36d1e44
update
ginzburg-dev Aug 23, 2025
c2771ea
Update
ginzburg-dev Aug 22, 2025
faa6eee
update
ginzburg-dev Aug 23, 2025
a635ecf
Update
ginzburg-dev Aug 22, 2025
19405f6
update
ginzburg-dev Aug 23, 2025
75d9483
Update
ginzburg-dev Aug 22, 2025
fd62339
update
ginzburg-dev Aug 23, 2025
78f9bf5
Update
ginzburg-dev Aug 22, 2025
231bf6e
update
ginzburg-dev Aug 23, 2025
3681cba
Update
ginzburg-dev Aug 22, 2025
a9bf892
update
ginzburg-dev Aug 23, 2025
7d5488e
Update
ginzburg-dev Aug 22, 2025
639b7db
update
ginzburg-dev Aug 23, 2025
9917fc5
Update
ginzburg-dev Aug 22, 2025
267ff95
update
ginzburg-dev Aug 23, 2025
74b056d
Update
ginzburg-dev Aug 22, 2025
f6269d8
update
ginzburg-dev Aug 23, 2025
100eed1
update
ginzburg-dev Aug 31, 2025
6934c16
Update
ginzburg-dev Aug 22, 2025
6cb56f0
update
ginzburg-dev Aug 23, 2025
bc5f1e1
Update
ginzburg-dev Aug 22, 2025
28c1ea9
update
ginzburg-dev Aug 23, 2025
9c4acc1
Update
ginzburg-dev Aug 22, 2025
f40d1e2
update
ginzburg-dev Aug 23, 2025
c511bcc
Update
ginzburg-dev Aug 22, 2025
5437939
update
ginzburg-dev Aug 23, 2025
b4c438e
Update
ginzburg-dev Aug 22, 2025
15216c0
update
ginzburg-dev Aug 23, 2025
31749ad
Update
ginzburg-dev Aug 22, 2025
c6c9d89
update
ginzburg-dev Aug 23, 2025
501d18a
Update
ginzburg-dev Aug 22, 2025
3ad0373
update
ginzburg-dev Aug 23, 2025
ebfa1f7
Update
ginzburg-dev Aug 22, 2025
5afeba6
update
ginzburg-dev Aug 23, 2025
ac6f7d9
Update
ginzburg-dev Aug 22, 2025
de84512
update
ginzburg-dev Aug 23, 2025
7243b74
Update
ginzburg-dev Aug 22, 2025
fda97a0
update
ginzburg-dev Aug 23, 2025
21bfb5d
Update
ginzburg-dev Aug 22, 2025
b14f7b7
update
ginzburg-dev Aug 23, 2025
304fc9b
Update
ginzburg-dev Aug 22, 2025
ec9c7e6
update
ginzburg-dev Aug 23, 2025
c597794
Update
ginzburg-dev Aug 22, 2025
3fb64b5
update
ginzburg-dev Aug 23, 2025
1f5954b
Update
ginzburg-dev Aug 22, 2025
37defbf
update
ginzburg-dev Aug 23, 2025
235abc4
Update
ginzburg-dev Aug 22, 2025
6811a62
update
ginzburg-dev Aug 23, 2025
879ac86
Update
ginzburg-dev Aug 22, 2025
d270ca6
update
ginzburg-dev Aug 23, 2025
54fe6d2
Update
ginzburg-dev Aug 22, 2025
93b3cbf
update
ginzburg-dev Aug 23, 2025
7a81f9f
Update
ginzburg-dev Aug 22, 2025
9379c00
update
ginzburg-dev Aug 23, 2025
d39db7e
Update
ginzburg-dev Aug 22, 2025
fd76dc3
update
ginzburg-dev Aug 23, 2025
6328c7b
Update
ginzburg-dev Aug 22, 2025
d6e9fe0
update
ginzburg-dev Aug 23, 2025
70d6674
Update
ginzburg-dev Aug 22, 2025
febb4e3
update
ginzburg-dev Aug 23, 2025
28dd99c
Update
ginzburg-dev Aug 22, 2025
cb79d12
update
ginzburg-dev Aug 23, 2025
741f74e
Update
ginzburg-dev Aug 22, 2025
1499c67
update
ginzburg-dev Aug 23, 2025
fc10ac3
Update
ginzburg-dev Aug 22, 2025
f8ad197
update
ginzburg-dev Aug 23, 2025
003a232
Update
ginzburg-dev Aug 22, 2025
2f96b4f
update
ginzburg-dev Aug 23, 2025
b3f99a8
Update
ginzburg-dev Aug 22, 2025
265e56a
update
ginzburg-dev Aug 23, 2025
ef57e93
Update
ginzburg-dev Aug 22, 2025
ff926a9
update
ginzburg-dev Aug 23, 2025
8030b7f
Update
ginzburg-dev Aug 22, 2025
1ed4d22
update
ginzburg-dev Aug 23, 2025
cc5bbf6
Update
ginzburg-dev Aug 22, 2025
d23b674
update
ginzburg-dev Aug 23, 2025
2d7fcf0
Update
ginzburg-dev Aug 22, 2025
dedb085
update
ginzburg-dev Aug 23, 2025
09c24b7
Update
ginzburg-dev Aug 22, 2025
3416b96
update
ginzburg-dev Aug 23, 2025
bae93de
Update
ginzburg-dev Aug 22, 2025
b1d3e33
update
ginzburg-dev Aug 23, 2025
4476961
Update
ginzburg-dev Aug 22, 2025
69d4658
update
ginzburg-dev Aug 23, 2025
108aeba
Update
ginzburg-dev Aug 22, 2025
f419ce6
update
ginzburg-dev Aug 23, 2025
3c04f8b
Update
ginzburg-dev Aug 22, 2025
40ed27f
update
ginzburg-dev Aug 23, 2025
13fd124
Update
ginzburg-dev Aug 22, 2025
274d488
update
ginzburg-dev Aug 23, 2025
e00a30b
Update
ginzburg-dev Aug 22, 2025
829f569
update
ginzburg-dev Aug 23, 2025
4b6fc06
Update
ginzburg-dev Aug 22, 2025
f995c26
update
ginzburg-dev Aug 23, 2025
e439ad5
Update
ginzburg-dev Aug 22, 2025
4a37bf3
update
ginzburg-dev Aug 23, 2025
503ac1c
Update
ginzburg-dev Aug 22, 2025
9e3ef8b
update
ginzburg-dev Aug 23, 2025
00aceea
Update
ginzburg-dev Aug 22, 2025
63287ff
update
ginzburg-dev Aug 23, 2025
a38bdf3
update convolutioncuda
ginzburg-dev Aug 30, 2025
0a24845
update
ginzburg-dev Aug 30, 2025
caae498
update
ginzburg-dev Aug 31, 2025
655fd03
Merge branch 'feature/cuda-convolution' of https://github.com/ginzbur…
ginzburg-dev Aug 31, 2025
b27a913
feat: first working convo2D GPU version
ginzburg-dev Sep 1, 2025
cb5b5a4
refactor ci
ginzburg-dev Nov 9, 2025
46ddbf0
refactor dependencies fetching
ginzburg-dev Nov 9, 2025
4dc2ef4
update git ignore
ginzburg-dev Nov 9, 2025
0727c93
Merge branch 'feature/cuda-convolution' of https://github.com/ginzbur…
ginzburg-dev Nov 9, 2025
3a92fd1
update
ginzburg-dev Nov 9, 2025
a4d0e0a
Merge branch 'feature/cuda-convolution' of https://github.com/ginzbur…
ginzburg-dev Nov 9, 2025
67a7faa
update compiller
ginzburg-dev Nov 9, 2025
82f57dd
update compiler
ginzburg-dev Nov 9, 2025
8df86b0
update gitignore
ginzburg-dev Nov 10, 2025
d517aeb
update
ginzburg-dev Nov 10, 2025
17be1e3
refactor cmake
ginzburg-dev Nov 10, 2025
487a7a0
update
ginzburg-dev Nov 10, 2025
e113c61
update
ginzburg-dev Nov 10, 2025
9da364d
update command
ginzburg-dev Nov 10, 2025
5133127
merge branch to develop
ginzburg-dev Nov 11, 2025
9b2a3aa
refactor actions
ginzburg-dev Nov 11, 2025
df19bfc
fix actions
ginzburg-dev Nov 11, 2025
2f000f4
fix2 actions
ginzburg-dev Nov 11, 2025
c15d290
fix cmake generator
ginzburg-dev Nov 11, 2025
25530bf
fix filter factory
ginzburg-dev Nov 11, 2025
5888de0
refactor cmakelists txt
ginzburg-dev Nov 11, 2025
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
16 changes: 5 additions & 11 deletions .github/workflows/linux_build_and_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: linux-build-and-test

on:
push:
branches: [ main ]
branches: [ main, develop ]
pull_request:
branches: [ main ]
branches: [ main, develop ]

jobs:
linux-build-and-test:
Expand All @@ -17,17 +17,11 @@ jobs:
- name: Set up CMake
uses: jwlawson/actions-setup-cmake@v2

- name: Install OpenEXR (Ubuntu)
run: sudo apt-get update && sudo apt-get install -y libopenexr-dev libimath-dev

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y g++ ninja-build

- name: Configure
run: cmake -S . -B build -G Ninja
run: cmake --preset linux-cpu-debug

- name: Build
run: cmake --build build --parallel --config Release
run: cmake --build --preset linux-cpu-debug

- name: Run tests
run: cd build && ctest --output-on-failure --verbose
run: ctest --preset linux-cpu-debug
10 changes: 4 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,17 @@
Thumbs.db
/_deps/
/CMakeFiles/
/build/
/build-debug/
/build-release/
/build-mac-debug/

/build*
/Testing/
*.dSYM
/.vscode/
/.VSCodeCounter/
/vcpkg/
/vcpkg_installed/

tests/test_files/

CTestTestfile.cmake
Makefile
cmake_install.cmake

cuda-keyring_1.1-1_all.deb
203 changes: 101 additions & 102 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,146 +1,145 @@
cmake_minimum_required(VERSION 3.23)
cmake_minimum_required(VERSION 3.26)

project(DenoiseMachineX
VERSION 0.1.0
LANGUAGES CXX
)
project(DenoiseMachineX VERSION 0.1.0 LANGUAGES CXX)

option(BUILD_CUDA "Build CUDA backends" ON)
option(BUILD_TESTING "Build tests" ON)

option(DMX_ENABLE_HEAVY_TESTS "Enable heavy/slow tests" ON)
if(DMX_ENABLE_HEAVY_TESTS)
add_compile_definitions(DMX_ENABLE_HEAVY_TESTS=1)
else()
add_compile_definitions(DMX_ENABLE_HEAVY_TESTS=0)
endif()

# ---- Options
option(BUILD_CUDA "Build CUDA backends" OFF)
option(BUILD_TESTING "Build tests" ON)

# ---- C++ setup
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g")
# Log level by Default 0 = TRACE
set(DMX_MIN_LOG_LEVEL "0" CACHE STRING "Compile-time minimum log level")
add_compile_definitions(DMX_MIN_LOG_LEVEL=${DMX_MIN_LOG_LEVEL})

# Output dirs (bin/ lib/)
# Output dirs
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

# ---- Dependencies: OpenEXR + Imath (prefer CONFIG, fallback to modules)
# Try config packages first (v3+)
find_package(Imath CONFIG QUIET)
find_package(OpenEXR CONFIG QUIET)

# Fallback to classic find modules (v2.x dev packages)
if(NOT Imath_FOUND)
find_package(Imath CONFIG REQUIRED) # provides Imath::Imath and/or IlmBase::Imath
endif()
if(NOT OpenEXR_FOUND)
find_package(OpenEXR CONFIG REQUIRED) # provides OpenEXR::OpenEXR or legacy targets
if(POLICY CMP0169)
cmake_policy(SET CMP0169 OLD)
endif()

include(FetchContent)

if(NOT OpenEXR_FOUND OR NOT Imath_FOUND)
message(FATAL_ERROR
"\nOpenEXR and/or Imath not found!\n"
"Please install them before configuring this project.\n"
"On macOS, run:\n"
" brew install openexr imath\n"
"On Ubuntu/Debian, run:\n"
" sudo apt install libopenexr-dev libimath-dev\n"
"On Windows (vcpkg):\n"
" vcpkg install openexr\n"
)
endif()

# Include headers
include_directories(${CMAKE_SOURCE_DIR}/include)

# ---- Sources (CPP always; CU optional when BUILD_CUDA=ON)
file(GLOB_RECURSE SRC_CPP CONFIGURE_DEPENDS
${CMAKE_SOURCE_DIR}/src/*.cpp
FetchContent_Declare(Imath
GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/Imath.git
GIT_TAG v3.1.10
)
FetchContent_MakeAvailable(Imath)
FetchContent_Declare(OpenEXR
GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/openexr.git
GIT_TAG v3.2.4
)
FetchContent_MakeAvailable(OpenEXR)

# keep CLI separate so we can add it explicitly to the exe
# ---- Sources
file(GLOB_RECURSE SRC_CPP CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/src/*.cpp)
file(GLOB_RECURSE SRC_CU CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/src/*.cu)
set(CLI_MAIN ${CMAKE_SOURCE_DIR}/cli/main.cpp)


if(BUILD_CUDA)
enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)
add_compile_definitions(DMX_ENABLE_CUDA=1)
file(GLOB_RECURSE SRC_CU CONFIGURE_DEPENDS
${CMAKE_SOURCE_DIR}/src/*.cu
)
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES "75;86;87;89;90;120" CACHE STRING "CUDA architectures")
endif()
else()
add_compile_definitions(DMX_ENABLE_CUDA=0)
set(SRC_CU)
endif()

# ---- Executable
add_executable(dmxdenoiser
${CLI_MAIN}
${SRC_CPP}
${SRC_CU}
)

# ---- Executable (DIRECTLY links all sources → static registrars run)
add_executable(dmxdenoiser ${SRC_CPP} ${SRC_CU} ${CLI_MAIN})


# CLI executable
#add_executable(dmxdenoiser ${SRC_FILES} cli/main.cpp)

target_include_directories(dmxdenoiser
PUBLIC
${CMAKE_SOURCE_DIR}/include
target_include_directories(dmxdenoiser PRIVATE
${CMAKE_SOURCE_DIR}/include
${imath_SOURCE_DIR}/src
${imath_BINARY_DIR}/config
${openexr_SOURCE_DIR}/src/lib
${openexr_BINARY_DIR}/config
)

# Link OpenEXR/Imath via whatever targets exist
target_link_libraries(dmxdenoiser
PUBLIC
$<$<TARGET_EXISTS:OpenEXR::OpenEXR>:OpenEXR::OpenEXR>
$<$<TARGET_EXISTS:Imath::Imath>:Imath::Imath>
$<$<TARGET_EXISTS:Imath::Half>:Imath::Half>
$<$<TARGET_EXISTS:OpenEXR::IlmImf>:OpenEXR::IlmImf>
$<$<TARGET_EXISTS:IlmBase::Imath>:IlmBase::Imath>
$<$<TARGET_EXISTS:IlmBase::Half>:IlmBase::Half>
$<$<TARGET_EXISTS:IlmBase::IlmThread>:IlmBase::IlmThread>
$<$<TARGET_EXISTS:Iex::Iex>:Iex::Iex>
PRIVATE
Imath::Imath
OpenEXR::OpenEXR
)

if(BUILD_CUDA)
target_link_libraries(dmxdenoiser PRIVATE CUDA::cudart CUDA::cuda_driver)
set_target_properties(dmxdenoiser PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
set_target_properties(dmxdenoiser PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_ARCHITECTURES "${CMAKE_CUDA_ARCHITECTURES}"
)
endif()


# Silence MSVC deprecation spam from OpenEXR threadpool atomics
if(MSVC)
add_compile_definitions(_SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING)
endif()

# ---- Tests
if(BUILD_TESTING)
include(FetchContent)
include(CTest)
enable_testing()

FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0
include(CTest)
enable_testing()

FetchContent_Declare(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0
)
FetchContent_MakeAvailable(googletest)

file(GLOB TEST_SOURCES CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/tests/*.cpp)
foreach(test_src ${TEST_SOURCES})
get_filename_component(test_name ${test_src} NAME_WE)
add_executable(${test_name}
${SRC_CPP}
${SRC_CU}
${test_src}
)
FetchContent_MakeAvailable(googletest)

file(GLOB TEST_SOURCES CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/tests/*.cpp)

foreach(test_src ${TEST_SOURCES})
get_filename_component(test_name ${test_src} NAME_WE)
# Build each test with the same src set (direct linkage)
add_executable(${test_name} ${SRC_CPP} ${SRC_CU} ${test_src})
target_include_directories(${test_name} PRIVATE ${CMAKE_SOURCE_DIR}/include)
target_link_libraries(${test_name} PRIVATE
gtest_main
$<$<TARGET_EXISTS:OpenEXR::OpenEXR>:OpenEXR::OpenEXR>
$<$<TARGET_EXISTS:Imath::Imath>:Imath::Imath>
$<$<TARGET_EXISTS:Imath::Half>:Imath::Half>
$<$<TARGET_EXISTS:OpenEXR::IlmImf>:OpenEXR::IlmImf>
$<$<TARGET_EXISTS:IlmBase::Imath>:IlmBase::Imath>
$<$<TARGET_EXISTS:IlmBase::Half>:IlmBase::Half>
$<$<TARGET_EXISTS:IlmBase::IlmThread>:IlmBase::IlmThread>
$<$<TARGET_EXISTS:Iex::Iex>:Iex::Iex>

target_include_directories(${test_name} PRIVATE
${CMAKE_SOURCE_DIR}/include
${imath_SOURCE_DIR}/src
${imath_BINARY_DIR}/config
${openexr_SOURCE_DIR}/src/lib
${openexr_BINARY_DIR}/config
)

target_link_libraries(${test_name} PRIVATE
gtest_main
Imath::Imath
OpenEXR::OpenEXR
)

if(BUILD_CUDA)
target_link_libraries(${test_name} PRIVATE CUDA::cudart CUDA::cuda_driver)
set_target_properties(${test_name} PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_ARCHITECTURES "${CMAKE_CUDA_ARCHITECTURES}"
)
if(BUILD_CUDA)
target_link_libraries(${test_name} PRIVATE CUDA::cudart CUDA::cuda_driver)
set_target_properties(${test_name} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
endif()
add_test(NAME ${test_name} COMMAND ${test_name})
endforeach()
endif()
endif()

if(MSVC)
target_compile_definitions(${test_name}
PUBLIC _SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING)
endif()

add_test(NAME ${test_name} COMMAND ${test_name})
endforeach()
endif()
Loading