Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix problem with detection of graphviz.
authornavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 17 Nov 2010 12:53:29 +0000 (12:53 +0000)
committernavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 17 Nov 2010 12:53:29 +0000 (12:53 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8565 48e7efb5-ca39-0410-a469-dd3cf9ba447f

buildtools/Cmake/CompleteInFiles.cmake
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/MakeExeLib.cmake
buildtools/Cmake/Modules/FindGraphviz.cmake [new file with mode: 0644]
buildtools/Cmake/Option.cmake
buildtools/Cmake/PrintArgs.cmake
buildtools/Cmake/gras_config.h.in
src/simdag/sd_dotloader.c

index f246697..5bde026 100644 (file)
@@ -1,16 +1,18 @@
+set(CMAKE_MODULE_PATH 
+${CMAKE_MODULE_PATH}
+${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Modules
+)
 include(CheckFunctionExists)
 include(CheckIncludeFile)
 include(CheckIncludeFiles)
 include(CheckLibraryExists)
 include(TestBigEndian)
 include(CheckFunctionExists)
 include(CheckIncludeFile)
 include(CheckIncludeFiles)
 include(CheckLibraryExists)
 include(TestBigEndian)
-
+if(enable_graphviz)
+include(FindGraphviz)
+endif(enable_graphviz)
 TEST_BIG_ENDIAN(BIGENDIAN)
 
 # Checks for header libraries functions.
 TEST_BIG_ENDIAN(BIGENDIAN)
 
 # Checks for header libraries functions.
-
-find_library(HAVE_CGRAPH_LIB cgraph)
-find_file(HAVE_CGRAPH_H graphviz/cgraph.h)
-
 CHECK_LIBRARY_EXISTS(pthread   pthread_create          NO_DEFAULT_PATHS pthread)
 CHECK_LIBRARY_EXISTS(pthread   sem_init                NO_DEFAULT_PATHS HAVE_SEM_INIT_LIB)
 CHECK_LIBRARY_EXISTS(pthread   sem_timedwait           NO_DEFAULT_PATHS HAVE_SEM_TIMEDWAIT_LIB)
 CHECK_LIBRARY_EXISTS(pthread   pthread_create          NO_DEFAULT_PATHS pthread)
 CHECK_LIBRARY_EXISTS(pthread   sem_init                NO_DEFAULT_PATHS HAVE_SEM_INIT_LIB)
 CHECK_LIBRARY_EXISTS(pthread   sem_timedwait           NO_DEFAULT_PATHS HAVE_SEM_TIMEDWAIT_LIB)
@@ -189,23 +191,52 @@ endif(NOT enable_gtnets OR enable_supernovae)
 
 #--------------------------------------------------------------------------------------------------
 ### Initialize of cgraph
 
 #--------------------------------------------------------------------------------------------------
 ### Initialize of cgraph
-mark_as_advanced(HAVE_CGRAPH_LIB)
-mark_as_advanced(HAVE_CGRAPH_H)
-
-if(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H)
-       string(REGEX REPLACE "/libcgraph.*" "" lib_cgraph ${HAVE_CGRAPH_LIB})
-       string(REPLACE "/cgraph.h" "" file_cgraph_h ${HAVE_CGRAPH_H})
-       string(REGEX MATCH "-I${file_cgraph_h} " operation "${CMAKE_C_FLAGS}")
-       if(NOT operation)
-               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${file_cgraph_h} ")
-       endif(NOT operation)
-       string(REGEX MATCH "-L${lib_cgraph} " operation "${CMAKE_C_FLAGS}")
-       if(NOT operation)
-               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-L${lib_cgraph} ")
-       endif(NOT operation)
-       
-endif(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H)
-
+if(enable_graphviz AND HAVE_CDT_LIB)
+if(HAVE_CGRAPH_LIB OR HAVE_AGRAPH_LIB)
+
+    if(HAVE_AGRAPH_LIB)
+       string(REGEX REPLACE "/libagraph.*" "" lib_graphviz ${HAVE_AGRAPH_LIB})   
+    else(HAVE_AGRAPH_LIB)
+        if(HAVE_CGRAPH_LIB)
+           string(REGEX REPLACE "/libcgraph.*" "" lib_graphviz ${HAVE_CGRAPH_LIB})   
+        endif(HAVE_CGRAPH_LIB)
+    endif(HAVE_AGRAPH_LIB)
+      
+    if(HAVE_GRAPH_H OR HAVE_AGRAPH_H OR HAVE_CGRAPH_H)
+    
+        if(HAVE_GRAPH_H)
+               string(REPLACE "/graphviz" "" file_graphviz_h ${HAVE_GRAPH_H})
+               set(GRAPH_H 1)
+        endif(HAVE_GRAPH_H)
+        
+        if(HAVE_AGRAPH_H)
+               string(REPLACE "/graphviz" "" file_graphviz_h ${HAVE_AGRAPH_H})
+               set(AGRAPH_H 1)
+        endif(HAVE_AGRAPH_H)
+        
+        if(HAVE_CGRAPH_H)
+               string(REPLACE "/graphviz" "" file_graphviz_h ${HAVE_CGRAPH_H})
+               set(CGRAPH_H 1)
+        endif(HAVE_CGRAPH_H)  
+         
+        string(REGEX MATCH "-I${file_graphviz_h} " operation "${CMAKE_C_FLAGS}")
+       if(NOT operation)
+               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${file_graphviz_h} ")
+       endif(NOT operation)
+       
+       string(REGEX MATCH "-I${file_graphviz_h}/graphviz " operation "${CMAKE_C_FLAGS}")
+       if(NOT operation)
+               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${file_graphviz_h}/graphviz ")
+       endif(NOT operation)
+       
+       string(REGEX MATCH "-L${lib_graphviz} " operation "${CMAKE_C_FLAGS}")
+       if(NOT operation)
+               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-L${lib_graphviz} ")
+       endif(NOT operation)
+       
+    endif(HAVE_GRAPH_H OR HAVE_AGRAPH_H OR HAVE_CGRAPH_H)
+endif(HAVE_CGRAPH_LIB OR HAVE_AGRAPH_LIB)
+endif(enable_graphviz AND HAVE_CDT_LIB)
 #--------------------------------------------------------------------------------------------------
 ### Initialize of pcre
 find_library(PATH_PCRE_LIB pcre)
 #--------------------------------------------------------------------------------------------------
 ### Initialize of pcre
 find_library(PATH_PCRE_LIB pcre)
index 2e0dcac..9019eaa 100644 (file)
@@ -268,13 +268,12 @@ set(SIMDAG_SRC
        src/simdag/sd_workstation.c
        src/simdag/sd_daxloader.c
 )
        src/simdag/sd_workstation.c
        src/simdag/sd_daxloader.c
 )
-if(HAVE_CGRAPH_H)
-       set(SIMDAG_SRC
-               ${SIMDAG_SRC}
+if(GRAPH_H OR AGRAPH_H OR CGRAPH_H)
+       set(SIMDAG_SRC 
+           ${SIMDAG_SRC}
                src/simdag/sd_dotloader.c
        )
                src/simdag/sd_dotloader.c
        )
-
-endif(HAVE_CGRAPH_H)
+endif(GRAPH_H OR AGRAPH_H OR CGRAPH_H)
 
 set(GRAS_COMMON_SRC
        src/gras/gras.c
 
 set(GRAS_COMMON_SRC
        src/gras/gras.c
index 10c9e31..c914951 100644 (file)
@@ -80,9 +80,19 @@ if(HAVE_LUA)
        )
 endif(HAVE_LUA)
 
        )
 endif(HAVE_LUA)
 
-if(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H)
-       SET(SIMGRID_DEP "${SIMGRID_DEP} -lcgraph")
-endif(HAVE_CGRAPH_LIB AND HAVE_CGRAPH_H)
+if(enable_graphviz AND HAVE_CDT_LIB)
+if(HAVE_AGRAPH_H OR HAVE_CGRAPH_H)
+
+    if(HAVE_CGRAPH_LIB)
+           SET(SIMGRID_DEP "${SIMGRID_DEP} -lcgraph")
+       else(HAVE_CGRAPH_LIB)
+        if(HAVE_AGRAPH_LIB)
+           SET(SIMGRID_DEP "${SIMGRID_DEP} -lagraph -lcdt")
+        endif(HAVE_AGRAPH_LIB) 
+    endif(HAVE_CGRAPH_LIB)
+           
+endif(HAVE_AGRAPH_H OR HAVE_CGRAPH_H)
+endif(enable_graphviz AND HAVE_CDT_LIB)
 
 if(HAVE_GTNETS)
        SET(SIMGRID_DEP "${SIMGRID_DEP} -lgtnets")
 
 if(HAVE_GTNETS)
        SET(SIMGRID_DEP "${SIMGRID_DEP} -lgtnets")
diff --git a/buildtools/Cmake/Modules/FindGraphviz.cmake b/buildtools/Cmake/Modules/FindGraphviz.cmake
new file mode 100644 (file)
index 0000000..d9691b9
--- /dev/null
@@ -0,0 +1,87 @@
+find_path(HAVE_CGRAPH_H cgraph.h
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES include/graphviz include
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+)
+
+find_path(HAVE_AGRAPH_H agraph.h
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES include/graphviz include
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+)
+
+find_path(HAVE_GRAPH_H graph.h
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES include/graphviz include
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+)
+
+find_library(HAVE_CGRAPH_LIB
+    NAME cgraph
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES lib/graphviz lib
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+)  
+
+find_library(HAVE_AGRAPH_LIB
+    NAME agraph
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES lib/graphviz lib
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+) 
+
+find_library(HAVE_GRAPH_LIB
+    NAME graph
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES lib/graphviz lib
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+)
+
+find_library(HAVE_CDT_LIB
+    NAME cdt
+    HINTS
+    $ENV{LD_LIBRARY_PATH}
+    PATH_SUFFIXES lib/graphviz lib
+    PATHS
+    /opt
+    /opt/local
+    /opt/csw
+    /sw
+    /usr
+)
\ No newline at end of file
index fff78d3..dd79d02 100644 (file)
@@ -40,6 +40,7 @@ option(enable_memcheck "Enable memcheck." off)
 option(enable_print_message "Enable print message during config." off)
 option(enable_model-checking "" off)
 option(enable_lib_static "" off)
 option(enable_print_message "Enable print message during config." off)
 option(enable_model-checking "" off)
 option(enable_lib_static "" off)
+option(enable_graphviz "" off)
 
 if(WIN32) #actually not enable with windows
        message("Mode supernovae and maintainer disable with Windows.")
 
 if(WIN32) #actually not enable with windows
        message("Mode supernovae and maintainer disable with Windows.")
@@ -90,4 +91,14 @@ mark_as_advanced(SED_EXE)
 mark_as_advanced(SVN)
 mark_as_advanced(GIT)
 mark_as_advanced(VALGRIND_PATH)
 mark_as_advanced(SVN)
 mark_as_advanced(GIT)
 mark_as_advanced(VALGRIND_PATH)
-mark_as_advanced(PATH_PCRE_H)
\ No newline at end of file
+mark_as_advanced(PATH_PCRE_H)
+mark_as_advanced(CMAKE_OSX_ARCHITECTURES)                                                                                                                  
+mark_as_advanced(CMAKE_OSX_DEPLOYMENT_TARGET)                                                                                                              
+mark_as_advanced(CMAKE_OSX_SYSROOT)                                                                         
+mark_as_advanced(HAVE_AGRAPH_H)
+mark_as_advanced(HAVE_CGRAPH_H)                                                                                
+mark_as_advanced(HAVE_GRAPH_H)                                                                                  
+mark_as_advanced(HAVE_GRAPH_LIB)
+mark_as_advanced(HAVE_CGRAPH_LIB)
+mark_as_advanced(HAVE_AGRAPH_LIB)
+mark_as_advanced(HAVE_CDT_LIB)
\ No newline at end of file
index 8003675..29db58e 100644 (file)
@@ -128,9 +128,16 @@ if(enable_print_message)
        message("SED :                          ${SED_EXE}")
        message("PERL :                                 ${PERL_EXECUTABLE}")
        endif(enable_maintainer_mode)
        message("SED :                          ${SED_EXE}")
        message("PERL :                                 ${PERL_EXECUTABLE}")
        endif(enable_maintainer_mode)
-       message("")
-       message("libcgraph :                    ${HAVE_CGRAPH_LIB}")
-       message("cgraph.h :                     ${HAVE_CGRAPH_H}")
+       if(enable_graphviz)
+       message("")
+       message("libcdt    :                    ${HAVE_CDT_LIB}")
+       message("libagraph :                    ${HAVE_AGRAPH_LIB}")
+       message("agraph.h  :                    ${HAVE_AGRAPH_H}")
+    message("libcgraph :                       ${HAVE_CGRAPH_LIB}")
+    message("cgraph.h  :                       ${HAVE_CGRAPH_H}") 
+    message("libgraph  :                       ${HAVE_GRAPH_LIB}")
+    message("graph.h   :                       ${HAVE_GRAPH_H}") 
+    endif(enable_graphviz)
        if(pipol_user)
        message("")
        message("ssh:                           ${HAVE_SSH}")
        if(pipol_user)
        message("")
        message("ssh:                           ${HAVE_SSH}")
@@ -177,6 +184,7 @@ message("   Supernovae mode:        ${enable_supernovae}")
 message("      Tracing mode   :        ${enable_tracing}")
 message("      Latency bound  :        ${enable_latency_bound_tracking}")
 message("      Model checking :        ${enable_model-checking}")
 message("      Tracing mode   :        ${enable_tracing}")
 message("      Latency bound  :        ${enable_latency_bound_tracking}")
 message("      Model checking :        ${enable_model-checking}")
+message("        Graphviz mode  :        ${enable_graphviz}")
 message("      Build SG doc   :        ${enable_doc}")
 message("")
 message("      Simgrid dependencies:   ${SIMGRID_DEP}")
 message("      Build SG doc   :        ${enable_doc}")
 message("")
 message("      Simgrid dependencies:   ${SIMGRID_DEP}")
index 3f5468f..0d9f3dc 100644 (file)
 /* Set to true if lib pcre is present */
 #cmakedefine HAVE_PCRE_LIB @HAVE_PCRE_LIB@
 
 /* Set to true if lib pcre is present */
 #cmakedefine HAVE_PCRE_LIB @HAVE_PCRE_LIB@
 
+/* Some variable for graphviz */
+#cmakedefine HAVE_GRAPH_H @GRAPH_H@
+#cmakedefine HAVE_CGRAPH_H @CGRAPH_H@
+#cmakedefine HAVE_AGRAPH_H @AGRAPH_H@
+
+
 /* Define if building universal (internal helper macro) */
 #cmakedefine AC_APPLE_UNIVERSAL_BUILD @AC_APPLE_UNIVERSAL_BUILD@
 
 /* Define if building universal (internal helper macro) */
 #cmakedefine AC_APPLE_UNIVERSAL_BUILD @AC_APPLE_UNIVERSAL_BUILD@
 
index 0621f4b..1381292 100644 (file)
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_dotparse, sd, "Parsing DOT files");
 
 #undef CLEANUP
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_dotparse, sd, "Parsing DOT files");
 
 #undef CLEANUP
-#include <cgraph.h>
+
+#ifdef HAVE_AGRAPH_H
+       #include <graphviz/agraph.h>
+#else
+       #ifdef HAVE_GRAPH_H
+               #include <graphviz/graph.h>
+       #else
+               #ifdef HAVE_CGRAPH_H
+                       #include <graphviz/cgraph.h>
+               #endif
+       #endif
+#endif
 
 void dot_add_task(Agnode_t * dag_node);
 void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge);
 
 void dot_add_task(Agnode_t * dag_node);
 void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge);
@@ -114,8 +125,13 @@ xbt_dynar_t SD_dotload_FILE(FILE * in_file)
 
   Agnode_t *dag_node = NULL;
   for (dag_node = agfstnode(dag_dot); dag_node;
 
   Agnode_t *dag_node = NULL;
   for (dag_node = agfstnode(dag_dot); dag_node;
+       #ifdef HAVE_CGRAPH_H
        dag_node = agnxtnode(dag_dot, dag_node)) {
        dag_node = agnxtnode(dag_dot, dag_node)) {
-    dot_add_task(dag_node);
+    #endif
+       #ifdef HAVE_AGRAPH_H
+          dag_node = agnxtnode(dag_node)) {
+       #endif
+  dot_add_task(dag_node);
   }
   agclose(dag_dot);
   xbt_dict_free(&jobs);
   }
   agclose(dag_dot);
   xbt_dict_free(&jobs);
@@ -199,15 +215,27 @@ void dot_add_task(Agnode_t * dag_node)
   }
   Agedge_t *e;
   int count = 0;
   }
   Agedge_t *e;
   int count = 0;
-  for (e = agfstin(dag_dot, dag_node); e; e = agnxtin(dag_dot, e)) {
-    dot_add_input_dependencies(current_job, e);
-    count++;
+
+  #ifdef HAVE_CGRAPH_H
+         for (e = agfstin(dag_dot, dag_node); e; e = agnxtin(dag_dot, e)) {
+  #endif
+  #ifdef HAVE_AGRAPH_H
+         for (e = agfstin(dag_node); e; e = agnxtin(e)) {
+  #endif
+  dot_add_input_dependencies(current_job, e);
+  count++;
   }
   if (count == 0 && current_job != root_task) {
     SD_task_dependency_add(NULL, NULL, root_task, current_job);
   }
   count = 0;
   }
   if (count == 0 && current_job != root_task) {
     SD_task_dependency_add(NULL, NULL, root_task, current_job);
   }
   count = 0;
-  for (e = agfstout(dag_dot, dag_node); e; e = agnxtout(dag_dot, e)) {
+  #ifdef HAVE_CGRAPH_H
+         for (e = agfstout(dag_dot, dag_node); e; e = agnxtout(dag_dot, e)) {
+  #endif
+  #ifdef HAVE_AGRAPH_H
+         for (e = agfstout(dag_node); e; e = agnxtout(e)) {
+  #endif
+
     dot_add_output_dependencies(current_job, e);
     count++;
   }
     dot_add_output_dependencies(current_job, e);
     count++;
   }