diff --git a/cmake/modules/Codegen.cmake b/cmake/modules/Codegen.cmake new file mode 100644 index 0000000000000000000000000000000000000000..73ca31ddfa6dac399dc3d2fe37993b791ef0583c --- /dev/null +++ b/cmake/modules/Codegen.cmake @@ -0,0 +1,25 @@ +function(add_code_generate_targets _target) + + get_target_property( compiledefs ${_target} COMPILE_DEFINITIONS ) + string(REPLACE "compiledefs-NOTFOUND" "" compiledefs "${compiledefs}") + + #Add targets and executables + add_executable( ${_target}_generatecode ${ARGN} ) + set_property(TARGET ${_target}_generatecode APPEND PROPERTY COMPILE_DEFINITIONS "NDEBUG;BASEFUNCTIONSET_CODEGEN_GENERATE;${compiledefs}") + dune_target_link_libraries( ${_target}_generatecode "${DUNE_LIBS}" ) + + add_executable( ${_target}_compilecode ${ARGN} ) + set_property(TARGET ${_target}_compilecode APPEND PROPERTY COMPILE_DEFINITIONS "NUSE_BASEFUNCTIONSET_CODEGEN;${compiledefs}") + dune_target_link_libraries( ${_target}_compilecode "${DUNE_LIBS}" ) + + add_custom_target( ${_target}_generate + ${CMAKE_COMMAND} -D RUN_CODEGEN_PROGRAM=${CMAKE_CURRENT_BINARY_DIR}/${_target}_generatecode -D RUN_CODEGEN_PARAMFILE="" -P ${CMAKE_SOURCE_DIR}/cmake/scripts/RunGenerate.cmake ) + + add_custom_target( ${_target}_codegen ) + + #Add depenencies + add_dependencies( ${_target}_generate ${_target}_generatecode ) + add_dependencies( ${_target}_compilecode ${_target}_generate ) + add_dependencies( ${_target}_codegen ${_target}_compilecode ) + +endfunction(add_code_generate_targets _target) diff --git a/cmake/modules/DuneFemDgMacros.cmake b/cmake/modules/DuneFemDgMacros.cmake index 2641d5df12508431cbd6564f3651fe69603f3a61..3f6bea099e9812c8234bfd5ccd0557dd3cbd88d4 100644 --- a/cmake/modules/DuneFemDgMacros.cmake +++ b/cmake/modules/DuneFemDgMacros.cmake @@ -1,10 +1,6 @@ # the main files for all the tests are in the same dir set(FEMDG_MAIN_DIR "${CMAKE_SOURCE_DIR}/dune/fem-dg/main") -# helper variables -set(SOURCEMAIN ${FEMDG_MAIN_DIR}/main.cc) -set(SOURCEONE ${SOURCEMAIN} ${FEMDG_MAIN_DIR}/main_pol.cc) -set(SOURCEALL ${SOURCEMAIN} ${FEMDG_MAIN_DIR}/main_0.cc ${FEMDG_MAIN_DIR}/main_1.cc ${FEMDG_MAIN_DIR}/main_2.cc ${FEMDG_MAIN_DIR}/main_3.cc ${FEMDG_MAIN_DIR}/main_4.cc) - +include(Codegen) include(TargetDistclean) message(AUTHOR_WARNING "TODO: Implement module test.") diff --git a/cmake/scripts/RunGenerate.cmake b/cmake/scripts/RunGenerate.cmake index aa04c01272e395a7de622072a4ff8a44f49bb281..a5078ea956e51f79fc0b18f274c613648041b5ae 100644 --- a/cmake/scripts/RunGenerate.cmake +++ b/cmake/scripts/RunGenerate.cmake @@ -1,5 +1,3 @@ - -message( "${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none ${RUN_GENERATE_CODE_PARAMFILE} " ) execute_process(COMMAND - ${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none ${RUN_GENERATE_CODE_PARAMFILE} ) + ${RUN_CODEGEN_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none ${RUN_CODEGEN_PARAMFILE} ) diff --git a/cmake/scripts/RunGenerateCode.cmake b/cmake/scripts/RunGenerateCode.cmake deleted file mode 100644 index 50b78875b3dd1da6e01f8bfde8a240a829131ef1..0000000000000000000000000000000000000000 --- a/cmake/scripts/RunGenerateCode.cmake +++ /dev/null @@ -1,7 +0,0 @@ - -message("COMMAND ${RUN_GENERATE_CODE_EXEC}" ) -execute_process(COMMAND make ${RUN_GENERATE_CODE_EXEC} ) -message( "${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none ${RUN_GENERATE_CODE_PARAMFILE} " ) -execute_process(COMMAND - ${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none ${RUN_GENERATE_CODE_PARAMFILE} ) - diff --git a/dune/fem-dg/test/advdiff/CMakeLists.txt b/dune/fem-dg/test/advdiff/CMakeLists.txt index da8e5e52d7120645645c1eeab9eba562f590d5d0..44d3dae1260233f550bb69795a8e2738039c6751 100644 --- a/dune/fem-dg/test/advdiff/CMakeLists.txt +++ b/dune/fem-dg/test/advdiff/CMakeLists.txt @@ -18,42 +18,7 @@ dune_target_link_libraries(advdiff "${DUNE_LIBS}") set_property(TARGET advdiff APPEND PROPERTY COMPILE_DEFINITIONS "ONLY_ONE_P;POLORDER=2") - #add_code_generate_targets( advdiff main.cc ) - #add_code_generate_targets( advdiffall main.cc ) - # - #add_custom_target( generate - # ${CMAKE_COMMAND} -D RUN_GENERATE_CODE_PROGRAM=${CMAKE_CURRENT_BINARY_DIR}/${PROG}_generatecode -D RUN_GENERATE_CODE_PARAMFILE="" -P ${CMAKE_SOURCE_DIR}/cmake/scripts/RunGenerate.cmake ) - # - #add_custom_target( generate_code - # ${CMAKE_COMMAND} -D RUN_GENERATE_CODE_EXEC=${PROG}_generatecode -D RUN_GENERATE_CODE_PROGRAM=${CMAKE_CURRENT_BINARY_DIR}/${PROG}_generatecode -D RUN_GENERATE_CODE_PARAMFILE="" -P ${CMAKE_SOURCE_DIR}/cmake/scripts/RunGenerateCode.cmake ) - # - #add_custom_target( compile_code - # ${PROG}_compilecode ) - # - # - #add_custom_target( codegen - # generate_code - # COMMAND compile_code ) - # - #add_dependencies( codegen generate_code compile_code ) +add_code_generate_targets( advdiff main.cc ) +add_code_generate_targets( advdiffall main.cc ) -#add_dependencies( advdiff generate ) - -#generatecode: -# $(MAKE) -i clean -# $(MAKE) CODEGEN_OBJFILE= CXXFLAGS="-g -Wall -Wfatal-errors -DBASEFUNCTIONSET_CODEGEN_GENERATE" $(PROG) -# $(MAKE) generate -# -#generate: -# ./$(PROG) fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none fem.ode.order:1 paramFiles/paramNSWaves -# -#compilecode: -# $(MAKE) clean -# $(MAKE) CXXFLAGS="$(CXXFLAGS) -DUSE_BASEFUNCTIONSET_CODEGEN" $(PROG) -# -#codegen: -# $(MAKE) generatecode -# $(MAKE) compilecode -# -# dune_add_test( advdiff advdiffall )