+set(CMAKE_MODULE_PATH
+${CMAKE_MODULE_PATH}
+${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Modules
+)
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.
-
-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)
#--------------------------------------------------------------------------------------------------
### 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)
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
)
-
-endif(HAVE_CGRAPH_H)
+endif(GRAPH_H OR AGRAPH_H OR CGRAPH_H)
set(GRAS_COMMON_SRC
src/gras/gras.c
)
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")
--- /dev/null
+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
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.")
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
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}")
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}")
/* 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@
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);
Agnode_t *dag_node = NULL;
for (dag_node = agfstnode(dag_dot); dag_node;
+ #ifdef HAVE_CGRAPH_H
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);
}
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;
- 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++;
}