From 8688c4d72efe0bb2a0ec75d6ed85c4b8613654e2 Mon Sep 17 00:00:00 2001
From: markus holzer <markus.holzer@fau.de>
Date: Fri, 18 Feb 2022 16:22:06 +0100
Subject: [PATCH] Remove duplicated code

---
 CMakeLists.txt                                |  7 ++++
 .../FlowAroundSphereCodeGen/CMakeLists.txt    | 35 +++++++------------
 .../PhaseFieldAllenCahn/CMakeLists.txt        | 33 ++++++-----------
 3 files changed, 31 insertions(+), 44 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1d0585943..b96132639 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1105,6 +1105,13 @@ if (WALBERLA_BUILD_WITH_CUDA AND (CMAKE_CUDA_COMPILER_VERSION VERSION_LESS "11.0
     set(CMAKE_CUDA_STANDARD 14)
     set(WALBERLA_USE_STD_EXPERIMENTAL_ANY 1)
 endif()
+
+# Can be used in CMake files containing generated files where the file suffix is dependent on the target
+if (CUDA_FOUND)
+    set(CODEGEN_FILE_SUFFIX "cu")
+else()
+    set(CODEGEN_FILE_SUFFIX "cu")
+endif()
 ############################################################################################################################
 
 
diff --git a/apps/benchmarks/FlowAroundSphereCodeGen/CMakeLists.txt b/apps/benchmarks/FlowAroundSphereCodeGen/CMakeLists.txt
index 549b7fd08..faaaf44dc 100644
--- a/apps/benchmarks/FlowAroundSphereCodeGen/CMakeLists.txt
+++ b/apps/benchmarks/FlowAroundSphereCodeGen/CMakeLists.txt
@@ -1,29 +1,20 @@
 waLBerla_link_files_to_builddir( "*.py" )
 
+waLBerla_generate_target_from_python(NAME FlowAroundSphereGenerated
+        FILE FlowAroundSphereCodeGen.py
+        OUT_FILES FlowAroundSphereCodeGen_LbSweep.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_LbSweep.h
+        FlowAroundSphereCodeGen_MacroSetter.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_MacroSetter.h
+        FlowAroundSphereCodeGen_UBB.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_UBB.h
+        FlowAroundSphereCodeGen_NoSlip.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_NoSlip.h
+        FlowAroundSphereCodeGen_Outflow.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_Outflow.h
+        FlowAroundSphereCodeGen_PackInfoEven.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_PackInfoEven.h
+        FlowAroundSphereCodeGen_PackInfoOdd.${CODEGEN_FILE_SUFFIX} FlowAroundSphereCodeGen_PackInfoOdd.h
+        FlowAroundSphereCodeGen_InfoHeader.h)
+
 if (WALBERLA_BUILD_WITH_CUDA)
-    waLBerla_generate_target_from_python(NAME FlowAroundSphereGenerated
-            FILE FlowAroundSphereCodeGen.py
-            OUT_FILES FlowAroundSphereCodeGen_LbSweep.cu FlowAroundSphereCodeGen_LbSweep.h
-            FlowAroundSphereCodeGen_MacroSetter.cu FlowAroundSphereCodeGen_MacroSetter.h
-            FlowAroundSphereCodeGen_UBB.cu FlowAroundSphereCodeGen_UBB.h
-            FlowAroundSphereCodeGen_NoSlip.cu FlowAroundSphereCodeGen_NoSlip.h
-            FlowAroundSphereCodeGen_Outflow.cu FlowAroundSphereCodeGen_Outflow.h
-            FlowAroundSphereCodeGen_PackInfoEven.cu FlowAroundSphereCodeGen_PackInfoEven.h
-            FlowAroundSphereCodeGen_PackInfoOdd.cu FlowAroundSphereCodeGen_PackInfoOdd.h
-            FlowAroundSphereCodeGen_InfoHeader.h)
     waLBerla_add_executable( NAME FlowAroundSphereCodeGen FILE FlowAroundSphereCodeGen.cpp
-            DEPENDS blockforest boundary core domain_decomposition field geometry python_coupling timeloop vtk FlowAroundSphereGenerated)
+            DEPENDS blockforest boundary core cuda domain_decomposition field geometry python_coupling timeloop vtk FlowAroundSphereGenerated)
 else ()
-    waLBerla_generate_target_from_python(NAME FlowAroundSphereGenerated
-            FILE FlowAroundSphereCodeGen.py
-            OUT_FILES FlowAroundSphereCodeGen_LbSweep.cpp FlowAroundSphereCodeGen_LbSweep.h
-            FlowAroundSphereCodeGen_MacroSetter.cpp FlowAroundSphereCodeGen_MacroSetter.h
-            FlowAroundSphereCodeGen_UBB.cpp FlowAroundSphereCodeGen_UBB.h
-            FlowAroundSphereCodeGen_NoSlip.cpp FlowAroundSphereCodeGen_NoSlip.h
-            FlowAroundSphereCodeGen_Outflow.cpp FlowAroundSphereCodeGen_Outflow.h
-            FlowAroundSphereCodeGen_PackInfoEven.cpp FlowAroundSphereCodeGen_PackInfoEven.h
-            FlowAroundSphereCodeGen_PackInfoOdd.cpp FlowAroundSphereCodeGen_PackInfoOdd.h
-            FlowAroundSphereCodeGen_InfoHeader.h)
     waLBerla_add_executable( NAME FlowAroundSphereCodeGen FILE FlowAroundSphereCodeGen.cpp
             DEPENDS blockforest boundary core domain_decomposition field geometry python_coupling timeloop vtk FlowAroundSphereGenerated)
-endif()
\ No newline at end of file
+endif (WALBERLA_BUILD_WITH_CUDA)
\ No newline at end of file
diff --git a/apps/benchmarks/PhaseFieldAllenCahn/CMakeLists.txt b/apps/benchmarks/PhaseFieldAllenCahn/CMakeLists.txt
index 35bf3f763..139d05a24 100644
--- a/apps/benchmarks/PhaseFieldAllenCahn/CMakeLists.txt
+++ b/apps/benchmarks/PhaseFieldAllenCahn/CMakeLists.txt
@@ -1,33 +1,22 @@
 waLBerla_link_files_to_builddir(*.prm)
 waLBerla_link_files_to_builddir(*.py)
 
-if (WALBERLA_BUILD_WITH_CUDA)
-    waLBerla_generate_target_from_python(NAME BenchmarkPhaseFieldCodeGenGPU
-            FILE multiphase_codegen.py
-            OUT_FILES initialize_phase_field_distributions.cu initialize_phase_field_distributions.h
-            initialize_velocity_based_distributions.cu initialize_velocity_based_distributions.h
-            phase_field_LB_step.cu phase_field_LB_step.h
-            hydro_LB_step.cu hydro_LB_step.h
-            PackInfo_phase_field_distributions.cu PackInfo_phase_field_distributions.h
-            PackInfo_phase_field.cu PackInfo_phase_field.h
-            PackInfo_velocity_based_distributions.cu PackInfo_velocity_based_distributions.h
-            GenDefines.h)
+waLBerla_generate_target_from_python(NAME BenchmarkPhaseFieldCodeGenGPU
+        FILE multiphase_codegen.py
+        OUT_FILES initialize_phase_field_distributions.${CODEGEN_FILE_SUFFIX} initialize_phase_field_distributions.h
+        initialize_velocity_based_distributions.${CODEGEN_FILE_SUFFIX} initialize_velocity_based_distributions.h
+        phase_field_LB_step.${CODEGEN_FILE_SUFFIX} phase_field_LB_step.h
+        hydro_LB_step.${CODEGEN_FILE_SUFFIX} hydro_LB_step.h
+        PackInfo_phase_field_distributions.${CODEGEN_FILE_SUFFIX} PackInfo_phase_field_distributions.h
+        PackInfo_phase_field.${CODEGEN_FILE_SUFFIX} PackInfo_phase_field.h
+        PackInfo_velocity_based_distributions.${CODEGEN_FILE_SUFFIX} PackInfo_velocity_based_distributions.h
+        GenDefines.h)
 
+if (WALBERLA_BUILD_WITH_CUDA)
     waLBerla_add_executable(NAME benchmark_multiphase
             FILES benchmark_multiphase.cpp InitializerFunctions.cpp multiphase_codegen.py
             DEPENDS blockforest core cuda field postprocessing python_coupling lbm geometry timeloop gui BenchmarkPhaseFieldCodeGenGPU)
 else ()
-    waLBerla_generate_target_from_python(NAME BenchmarkPhaseFieldCodeGenCPU
-            FILE multiphase_codegen.py
-            OUT_FILES initialize_phase_field_distributions.cpp initialize_phase_field_distributions.h
-            initialize_velocity_based_distributions.cpp initialize_velocity_based_distributions.h
-            phase_field_LB_step.cpp phase_field_LB_step.h
-            hydro_LB_step.cpp hydro_LB_step.h
-            PackInfo_phase_field_distributions.cpp PackInfo_phase_field_distributions.h
-            PackInfo_phase_field.cpp PackInfo_phase_field.h
-            PackInfo_velocity_based_distributions.cpp PackInfo_velocity_based_distributions.h
-            GenDefines.h)
-
     waLBerla_add_executable(NAME benchmark_multiphase
             FILES benchmark_multiphase.cpp InitializerFunctions.cpp multiphase_codegen.py
             DEPENDS blockforest core field postprocessing python_coupling lbm geometry timeloop gui BenchmarkPhaseFieldCodeGenCPU)
-- 
GitLab