+if(MAINTAINER_MODE)
+
+find_program(FLEX_EXE NAMES flex)
+find_program(FLEXML_EXE NAMES flexml)
+
+IF(FLEX_EXE)
+ set(HAVE_FLEX 1)
+ENDIF(FLEX_EXE)
+
+IF(FLEXML_EXE)
+ set(HAVE_FLEXML 1)
+ENDIF(FLEXML_EXE)
+
+message("HAVE_FLEX ${HAVE_FLEX}")
+message("HAVE_FLEXML ${HAVE_FLEXML}")
+
+ file(REMOVE "${PROJECT_DIRECTORY}/src/gras/DataDesc/ddt_parse.yy.c ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.c ${PROJECT_DIRECTORY}/src/xbt/graphxml.c ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.c ${PROJECT_DIRECTORY}/include/surf/simgrid_dtd.h ${PROJECT_DIRECTORY}/include/xbt/graphxml.h ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.h")
+
+ if(HAVE_FLEXML AND HAVE_FLEX)
+
+ exec_program("${FLEXML_EXE} --root-tags platform -b 1000000 -P surfxml --sysid=simgrid.dtd -S ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.l -L ${PROJECT_DIRECTORY}/src/surf/simgrid.dtd" OUTPUT_VARIABLE "FLEX_OK")
+ exec_program("${FLEXML_EXE} --root-tags platform -P surfxml --sysid=simgrid.dtd -H ${PROJECT_DIRECTORY}/include/surf/simgrid_dtd.h -L ${PROJECT_DIRECTORY}/src/surf/simgrid.dtd" OUTPUT_VARIABLE "FLEX_OK")
+
+ exec_program("${FLEXML_EXE} -b 1000000 -P graphxml --sysid=graphxml.dtd -S ${PROJECT_DIRECTORY}/src/xbt/graphxml.l -L ${PROJECT_DIRECTORY}/src/xbt/graphxml.dtd" OUTPUT_VARIABLE "FLEX_OK")
+ exec_program("${FLEXML_EXE} -P graphxml --sysid=graphxml.dtd -H ${PROJECT_DIRECTORY}/include/xbt/graphxml.h -L ${PROJECT_DIRECTORY}/src/xbt/graphxml.dtd" OUTPUT_VARIABLE "FLEX_OK")
+
+ exec_program("${FLEXML_EXE} -b 1000000 --root-tags adag -P dax_ --sysid=dax.dtd -S ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.l -L ${PROJECT_DIRECTORY}/src/simdag/dax.dtd" OUTPUT_VARIABLE "FLEX_OK")
+ exec_program("${FLEXML_EXE} --root-tags adag -P dax_ --sysid=dax.dtd -H ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.h -L ${PROJECT_DIRECTORY}/src/simdag/dax.dtd" OUTPUT_VARIABLE "FLEX_OK")
+
+ exec_program("${FLEX_EXE} -o ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.c -Psurf_parse_ --noline ${PROJECT_DIRECTORY}/src/surf/simgrid_dtd.l"
+ OUTPUT_VARIABLE "FLEX_OK")
+ exec_program("${FLEX_EXE} -o ${PROJECT_DIRECTORY}/src/xbt/graphxml.c -Pxbt_graph_parse_ --noline ${PROJECT_DIRECTORY}/xbt/graphxml.l"
+ OUTPUT_VARIABLE "FLEX_OK")
+ exec_program("${FLEX_EXE} -o ${PROJECT_DIRECTORY}/src/simdag/dax_dtd.c -Pdax_ --noline ${PROJECT_DIRECTORY}/simdag/dax_dtd.l"
+ OUTPUT_VARIABLE "FLEX_OK")
+
+ exec_program("${FLEX_EXE} -o ${PROJECT_DIRECTORY}/src/gras/DataDesc/ddt_parse.yy.c -Pgras_ddt_parse_ --noline ${PROJECT_DIRECTORY}/src/gras/DataDesc/ddt_parse.yy.l" OUTPUT_VARIABLE "FLEX_OK")
+
+ elseif(HAVE_FLEXML AND HAVE_FLEX)
+ message(FATAL_ERROR "Install flex and flexml before use maintainer mode")
+ endif(HAVE_FLEXML AND HAVE_FLEX)
+
+endif(MAINTAINER_MODE)
+