From 01ce56d7ee611fd4e6422609f6770b9a6c6a164e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com>
Date: Tue, 4 May 2021 17:22:42 +0200
Subject: [PATCH] Refactoring CMakeLists for smart pointers examples.

---
 .../Examples/Pointers/CMakeLists.txt          | 35 ++++++++++++-------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/Documentation/Examples/Pointers/CMakeLists.txt b/Documentation/Examples/Pointers/CMakeLists.txt
index ef7a5f6150..2b08ac3299 100644
--- a/Documentation/Examples/Pointers/CMakeLists.txt
+++ b/Documentation/Examples/Pointers/CMakeLists.txt
@@ -1,15 +1,26 @@
-IF( BUILD_CUDA )
-   CUDA_ADD_EXECUTABLE(UniquePointerExampleCuda UniquePointerExample.cu)
-   ADD_CUSTOM_COMMAND( COMMAND UniquePointerExampleCuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/UniquePointerExample.out OUTPUT UniquePointerExample.out )
-   CUDA_ADD_EXECUTABLE(SharedPointerExampleCuda SharedPointerExample.cu)
-   ADD_CUSTOM_COMMAND( COMMAND SharedPointerExampleCuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SharedPointerExample.out OUTPUT SharedPointerExample.out )
-   CUDA_ADD_EXECUTABLE(DevicePointerExampleCuda DevicePointerExample.cu)
-   ADD_CUSTOM_COMMAND( COMMAND DevicePointerExampleCuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DevicePointerExample.out OUTPUT DevicePointerExample.out )
+set( COMMON_EXAMPLES
+   UniquePointerExample
+   SharedPointerExample
+   DevicePointerExample
+)
 
-ADD_CUSTOM_TARGET( RunPointersExamples ALL DEPENDS
-   UniquePointerExample.out
-   SharedPointerExample.out
-   DevicePointerExample.out
- )
+if( BUILD_CUDA )
+   foreach( target IN ITEMS ${COMMON_EXAMPLES} )
+      cuda_add_executable( ${target}-cuda ${target}.cu OPTIONS )
+      add_custom_command( COMMAND ${target}-cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/${target}.out OUTPUT ${target}.out )
+      set( CUDA_OUTPUTS ${CUDA_OUTPUTS} ${target}.out )
+   endforeach()
+else()
+   foreach( target IN ITEMS ${COMMON_EXAMPLES} )
+      add_executable( ${target} ${target}.cpp )
+      add_custom_command( COMMAND ${target} > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/${target}.out OUTPUT ${target}.out )
+      set( HOST_OUTPUTS ${HOST_OUTPUTS} ${target}.out )
+   endforeach()
+endif()
 
+IF( BUILD_CUDA )
+   ADD_CUSTOM_TARGET( RunPointersExamples-cuda ALL DEPENDS ${CUDA_OUTPUTS} )
+ELSE()
+   ADD_CUSTOM_TARGET( RunPointersExamples ALL DEPENDS ${HOST_OUTPUTS} )
 ENDIF()
+
-- 
GitLab