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 )