diff --git a/cmake/scripts/RunGenerate.cmake b/cmake/scripts/RunGenerate.cmake new file mode 100644 index 0000000000000000000000000000000000000000..ec8d13d2f929b4f2feab3e807212e06530aac081 --- /dev/null +++ b/cmake/scripts/RunGenerate.cmake @@ -0,0 +1,5 @@ + +message( "${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none fem.ode.order:1 ${RUN_GENERATE_CODE_PARAMFILE} " ) +execute_process(COMMAND + ${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none fem.ode.order:1 ${RUN_GENERATE_CODE_PARAMFILE} ) + diff --git a/cmake/scripts/RunGenerateCode.cmake b/cmake/scripts/RunGenerateCode.cmake new file mode 100644 index 0000000000000000000000000000000000000000..4f37689e1b8f7a803e9cb23e1a52f007bd9df0ef --- /dev/null +++ b/cmake/scripts/RunGenerateCode.cmake @@ -0,0 +1,7 @@ + +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 fem.ode.order:1 ${RUN_GENERATE_CODE_PARAMFILE} " ) +execute_process(COMMAND + ${RUN_GENERATE_CODE_PROGRAM} fem.eoc.steps:1 femdg.stepper.maximaltimesteps:1 fem.io.outputformat:none fem.ode.order:1 ${RUN_GENERATE_CODE_PARAMFILE} ) + diff --git a/dune/fem-dg/main/main.cc b/dune/fem-dg/main/main.cc index 4d02bc39dd3ef1680c33dbb25f7cbcd80d58c2b1..c732f8e9741bfbe3e960e13821f87090f2af1d8c 100644 --- a/dune/fem-dg/main/main.cc +++ b/dune/fem-dg/main/main.cc @@ -35,7 +35,7 @@ std::string autoFilename(const int dim, const int polynomialOrder ) { std::stringstream name; - name << "autogeneratedcode_" << dim << "d_k" << polynomialOrder << ".hh"; + name << Dune::Fem::Parameter::commonInputPath() << "/autogeneratedcode_" << dim << "d_k" << polynomialOrder << ".hh"; return name.str(); } @@ -146,14 +146,14 @@ void codegen() // write include header ////////////////////////////////////////////////// - std::ofstream file( "autogeneratedcode.hh" ); + std::ofstream file( Dune::Fem::Parameter::commonInputPath() + "/autogeneratedcode.hh" ); if( file ) { for( int dim=1; dim<4; ++dim ) { std::stringstream dimfilename; - dimfilename << "./autogeneratedcode/autogeneratedcode_" << dim << "d.hh"; + dimfilename << Dune::Fem::Parameter::commonInputPath() << "/autogeneratedcode/autogeneratedcode_" << dim << "d.hh"; file << "#if CODEDIM == " << dim << std::endl; file << "#include \"" << dimfilename.str() << "\"" << std::endl; file << "#endif" << std::endl; diff --git a/dune/fem-dg/test/advdiff/CMakeLists.txt b/dune/fem-dg/test/advdiff/CMakeLists.txt index 2a01b91ba9b99e65e6bcd91c0abbaaa6f3bee32c..e0eb288340d1ebeeaa0f195ebf5478aa350aa94e 100644 --- a/dune/fem-dg/test/advdiff/CMakeLists.txt +++ b/dune/fem-dg/test/advdiff/CMakeLists.txt @@ -27,4 +27,80 @@ dune_target_link_libraries(advdiff "${DUNE_LIBS}") set_property(TARGET advdiff APPEND PROPERTY COMPILE_DEFINITIONS "ONLY_ONE_P;POLORDER=2") +set( PROG "advdiff" ) + +add_executable( ${PROG}_generatecode "${MAININCLUDE_PATH}/main.cc" + "${MAININCLUDE_PATH}/main_0.cc" + "${MAININCLUDE_PATH}/main_1.cc" + "${MAININCLUDE_PATH}/main_2.cc" + "${MAININCLUDE_PATH}/main_3.cc") +set_property(TARGET ${PROG}_generatecode APPEND PROPERTY + COMPILE_DEFINITIONS "NDEBUG;BASEFUNCTIONSET_CODEGEN_GENERATE") +dune_target_link_libraries( ${PROG}_generatecode "${DUNE_LIBS}") + +add_executable( ${PROG}_compilecode "${MAININCLUDE_PATH}/main.cc" + "${MAININCLUDE_PATH}/main_0.cc" + "${MAININCLUDE_PATH}/main_1.cc" + "${MAININCLUDE_PATH}/main_2.cc" + "${MAININCLUDE_PATH}/main_3.cc") +set_property(TARGET ${PROG}_compilecode APPEND PROPERTY + COMPILE_DEFINITIONS "USE_BASEFUNCTIONSET_CODEGEN") +dune_target_link_libraries( ${PROG}_compilecode "${DUNE_LIBS}" ) + + +#add_custom_command( OUTPUT generate_command + # COMMAND ${CMAKE_COMMAND} -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_command( OUTPUT generate_code_command + # COMMAND ${PROG}_generatecode + # COMMAND generate_command ) + #add_custom_target( generate_code DEPENDS generate_code_command ) + # + # + #add_custom_command( OUTPUT compile_code_command + # COMMAND ${PROG}_compilecode ) + #add_custom_target( compile_code DEPENDS compile_code_command ) + # + # + #add_custom_command( OUTPUT codegen_command + # COMMAND generate_code_command + # COMMAND compile_code_command ) + #add_custom_target( codegen DEPENDS codegen_command ) + + + +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_dependencies( advdiff generate ) + +#generatecode: +# $(MAKE) -i clean +# $(MAKE) CODEGEN_OBJFILE= CXXFLAGS="-g -Wall -Wfatal-errors -DBASEFUNCTIONSET_CODEGEN_GENERATE" $(PROG) +# $(MAKE) generate +# +#generate: +# ./$(PROG) femhowto.eocSteps: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 )