Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Link against libdw
authorGabriel Corona <gabriel.corona@loria.fr>
Mon, 23 Dec 2013 13:36:07 +0000 (14:36 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Fri, 17 Jan 2014 09:20:18 +0000 (10:20 +0100)
buildtools/Cmake/CompleteInFiles.cmake
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/MakeLib.cmake
buildtools/Cmake/Modules/FindLibdw.cmake [new file with mode: 0644]
buildtools/Cmake/Modules/FindLibunwind.cmake

index 16aff5c..16f8dba 100644 (file)
@@ -212,6 +212,7 @@ if(enable_model-checking AND HAVE_MMAP)
   SET(HAVE_MC 1)
   SET(MMALLOC_WANT_OVERRIDE_LEGACY 1)
   include(FindLibunwind)
+  include(FindLibdw)
 else()
   SET(HAVE_MC 0)
   SET(MMALLOC_WANT_OVERRIDE_LEGACY 0)
index c8652bd..193de82 100644 (file)
@@ -974,6 +974,7 @@ set(CMAKE_SOURCE_FILES
   buildtools/Cmake/Modules/FindGTnets.cmake
   buildtools/Cmake/Modules/FindGraphviz.cmake
   buildtools/Cmake/Modules/FindLibunwind.cmake
+  buildtools/Cmake/Modules/FindLibdw.cmake
   buildtools/Cmake/Modules/FindLua51Simgrid.cmake
   buildtools/Cmake/Modules/FindNS3.cmake
   buildtools/Cmake/Modules/FindRngStream.cmake
index 93ace1d..2f81c23 100644 (file)
@@ -91,6 +91,9 @@ if(HAVE_MC)
   #   (that includes FindLibunwind.cmake), so simply load it now.
   
   SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind")
+
+  # Same for libdw
+  SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw")
   # This supposes that the host machine is either an AMD or a X86.
   # This is deeply wrong, and should be fixed by manually loading -lunwind-PLAT (FIXME)
   if(PROCESSOR_x86_64)
diff --git a/buildtools/Cmake/Modules/FindLibdw.cmake b/buildtools/Cmake/Modules/FindLibdw.cmake
new file mode 100644 (file)
index 0000000..9e07a38
--- /dev/null
@@ -0,0 +1,55 @@
+find_library(PATH_LIBDW_LIB
+  NAMES dw
+  HINTS
+  $ENV{SIMGRID_LIBDW_LIBRARY_PATH}
+  $ENV{LD_LIBRARY_PATH}
+  $ENV{LIBDW_LIBRARY_PATH}
+  PATH_SUFFIXES lib/ GnuWin32/lib
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr)
+
+
+find_path(PATH_LIBDW_H "elfutils/libdw.h"
+  HINTS
+  $ENV{SIMGRID_LIBDW_LIBRARY_PATH}
+  $ENV{LD_LIBRARY_PATH}
+  $ENV{LIBDW_LIBRARY_PATH}
+  PATH_SUFFIXES include/ GnuWin32/include
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr)
+
+message(STATUS "Looking for libdw.h")
+if(PATH_LIBDW_H)
+  message(STATUS "Looking for libdw.h - found")
+else()
+  message(STATUS "Looking for libdw.h - not found")
+endif()
+
+message(STATUS "Looking for libdw")
+if(PATH_LIBDW_LIB)
+  message(STATUS "Looking for libdw - found")
+else()
+  message(STATUS "Looking for libdw - not found")
+endif()
+
+if(PATH_LIBDW_LIB AND PATH_LIBDW_H)
+  string(REGEX REPLACE "/libdw.*[.]${LIB_EXE}$" "" PATH_LIBDW_LIB "${PATH_LIBDW_LIB}")
+  string(REGEX REPLACE "/libdw.h"               "" PATH_LIBDW_H   "${PATH_LIBDW_H}")
+
+  include_directories(${PATH_LIBDW_H})
+  link_directories(${PATH_LIBDW_LIB})
+
+else()
+  message(FATAL_ERROR "Please either install the libdw-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
+endif()
+
+mark_as_advanced(PATH_LIBDW_H)
+mark_as_advanced(PATH_LIBDW_LIB)
index 56de1f7..03bbed9 100644 (file)
@@ -66,5 +66,5 @@ else()
   message(FATAL_ERROR "Please either install the libunwind7-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
 endif()
 
-mark_as_advanced(PATH_LIBUNWIND_H)
-mark_as_advanced(PATH_LIBUNWIND_LIB)
\ No newline at end of file
+mark_as_advanced(PATH_LIBDW_H)
+mark_as_advanced(PATH_LIBDW_LIB)