Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Always check for perl since we need it quite a lot, actually
[simgrid.git] / buildtools / Cmake / MaintainerMode.cmake
index 8838e46..477d66c 100644 (file)
@@ -2,14 +2,23 @@ if(enable_maintainer_mode AND NOT WIN32)
 find_program(FLEX_EXE NAMES flex)
 find_program(FLEXML_EXE NAMES flexml)
 find_program(SED_EXE NAMES sed)
-find_program(PERL_EXE NAMES perl)
 
 IF(FLEX_EXE)
        set(HAVE_FLEX 1)
+       exec_program("${FLEX_EXE} --version" OUTPUT_VARIABLE FLEX_VERSION)
+       string(REGEX MATCH "[0-9]+[.]+[0-9]+[.]+[0-9]+" FLEX_VERSION "${FLEX_VERSION}")
+       string(REGEX MATCH "^[0-9]+" FLEX_MAJOR_VERSION "${FLEX_VERSION}")
+       string(REGEX MATCH "[0-9]+[.]+[0-9]+$" FLEX_VERSION "${FLEX_VERSION}")
+       string(REGEX MATCH "^[0-9]+" FLEX_MINOR_VERSION "${FLEX_VERSION}")
+       string(REGEX MATCH "[0-9]+$" FLEX_PATCH_VERSION "${FLEX_VERSION}")
 ENDIF(FLEX_EXE)
 
 IF(FLEXML_EXE)
        set(HAVE_FLEXML 1)
+       exec_program("${FLEXML_EXE} --version" OUTPUT_VARIABLE FLEXML_VERSION)
+       string(REGEX MATCH "[0-9]+[.]+[0-9]+" FLEXML_VERSION "${FLEXML_VERSION}")
+       string(REGEX MATCH "^[0-9]*" FLEXML_MAJOR_VERSION "${FLEXML_VERSION}")
+       string(REGEX MATCH "[0-9]*$" FLEXML_MINOR_VERSION "${FLEXML_VERSION}")
 ENDIF(FLEXML_EXE)
 
 if(HAVE_FLEXML AND HAVE_FLEX AND SED_EXE)
@@ -109,10 +118,21 @@ else(HAVE_FLEXML AND HAVE_FLEX  AND SED_EXE)
        message("  FLEX :       ${FLEX_EXE}")
        message("FLEXML :       ${FLEXML_EXE}")
        message("   SED :       ${SED_EXE}")
-       message(FATAL_ERROR "Install flex or flexml or sed before use maintainer mode")
+       
+       if(NOT HAVE_FLEXML)
+               message("Install flexml before use maintainer mode.")
+       endif(NOT HAVE_FLEXML)
+       if(NOT HAVE_FLEX)
+               message("Install flex before use maintainer mode.")
+       endif(NOT HAVE_FLEX)
+       if(NOT SED_EXE)
+               message("Install sed before use maintainer mode.")
+       endif(NOT SED_EXE)
+       
+       message(FATAL_ERROR "Need to install all tools for maintainer mode !!!")
 endif(HAVE_FLEXML AND HAVE_FLEX  AND SED_EXE)
 
-if(PERL_EXE)
+if(PERL_EXECUTABLE)
        
        ADD_CUSTOM_COMMAND(
        OUTPUT  ${PROJECT_DIRECTORY}/src/cunit_unit.c
@@ -190,9 +210,9 @@ if(PERL_EXE)
                                                                ${PROJECT_DIRECTORY}/src/xbt_synchro_unit.c
                                                )
        
-else(PERL_EXE)
+else(PERL_EXECUTABLE)
        message(FATAL_ERROR "Install perl before use maintainer mode")
-endif(PERL_EXE)
+endif(PERL_EXECUTABLE)
 
 endif(enable_maintainer_mode AND NOT WIN32)