From f68914496f13583798a256f87e9d9d706ccf203d Mon Sep 17 00:00:00 2001
From: Rafael Ravedutti <rafaelravedutti@gmail.com>
Date: Wed, 14 Feb 2024 00:56:54 +0100
Subject: [PATCH] Update CMakeLists.txt

Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
---
 CMakeLists.txt | 42 ++++++++++++++++++++++++++----------------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f10b28e..a0da6cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,7 +29,12 @@ set(RUNTIME_COMMON_FILES
     runtime/pairs.cpp
     runtime/domain/block_forest.cpp
     runtime/domain/regular_6d_stencil.cpp)
- 
+
+execute_process(
+    COMMAND ${PYTHON_EXECUTABLE} setup.py build && ${PYTHON_EXECUTABLE} setup.py install --user
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    RESULT_VARIABLE CMD_RESULT)
+
 if(USE_WALBERLA)
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_WALBERLA_LOAD_BALANCING ")
     find_package(waLBerla REQUIRED)
@@ -39,19 +44,22 @@ if(USE_WALBERLA)
     waLBerla_add_executable(
         NAME ${CPU_BIN}
         FILES ${CPU_SRC} ${RUNTIME_COMMON_FILES} ${RUNTIME_CPU_FILES}
-        DEPENDS blockforest core pe)
+        DEPENDS blockforest core pe ${CPU_SRC} runtime_cpu)
 else()
     add_executable(${CPU_BIN} ${CPU_SRC} ${RUNTIME_COMMON_FILES} ${RUNTIME_CPU_FILES})
 endif()
 
 add_library(runtime_cpu STATIC runtime/devices/dummy.cpp)
-target_link_libraries(${CPU_BIN} runtime_cpu)
-add_custom_target(gen_cpu ALL DEPENDS ${CPU_SRC})
+#target_link_libraries(${CPU_BIN} runtime_cpu)
+
 add_custom_command(
-    TARGET gen_cpu
-    PRE_BUILD # Call this command pre-build
-    COMMAND ${PYTHON_EXECUTABLE} examples/${TESTCASE}.py cpu
-    COMMENT "Generate CPU code")
+    OUTPUT ${CPU_SRC}
+    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/examples/${TESTCASE}.py cpu
+    COMMENT "Generate CPU code"
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/examples/${TESTCASE}.py)
+
+add_custom_target(gen_cpu DEPENDS ${CPU_SRC})
+add_dependencies(${CPU_BIN} gen_cpu)
 
 if(COMPILE_CUDA)
     find_package(CUDA REQUIRED)
@@ -60,13 +68,13 @@ if(COMPILE_CUDA)
         waLBerla_add_executable(
             NAME ${GPU_BIN}
             FILES ${GPU_SRC} ${RUNTIME_COMMON_FILES}
-            DEPENDS blockforest core pe)
+            DEPENDS blockforest core pe ${GPU_SRC} runtime_gpu)
     else()
         add_executable(${GPU_BIN} ${GPU_SRC} ${RUNTIME_COMMON_FILES} ${RUNTIME_GPU_FILES})
     endif()
 
     if(ENABLE_GPU_DIRECT)
-        target_link_libraries(${GPU_BIN} "-DENABLE_CUDA_AWARE_MPI ")
+        target_compile_options(${GPU_BIN} PRIVATE -DENABLE_CUDA_AWARE_MPI)
     endif()
 
     add_library(runtime_gpu STATIC runtime/devices/cuda.cu)
@@ -74,14 +82,16 @@ if(COMPILE_CUDA)
     set_target_properties(runtime_gpu PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
 
     #set_property(TARGET ${GPU_BIN} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
-    target_link_libraries(${GPU_BIN} runtime_gpu)
+    #target_link_libraries(${GPU_BIN} runtime_gpu)
 
-    add_custom_target(gen_gpu ALL DEPENDS ${GPU_SRC})
     add_custom_command(
-        TARGET gen_gpu
-        PRE_BUILD # Call this command pre-build
-        COMMAND ${PYTHON_EXECUTABLE} examples/${TESTCASE}.py gpu
-        COMMENT "Generate GPU code")
+        OUTPUT ${GPU_SRC}
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/examples/${TESTCASE}.py gpu
+        COMMENT "Generate GPU code"
+        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/examples/${TESTCASE}.py)
+
+    add_custom_target(gen_gpu DEPENDS ${GPU_SRC})
+    add_dependencies(${GPU_BIN} gen_gpu)
 endif()
 
 target_link_libraries(${CPU_BIN} ${CMAKE_EXE_LINKER_FLAGS})
-- 
GitLab