# Search for libunwind and components, both includes and libraries
#
-# Copyright (C) 2003-2018 The SimGrid Team.
+# Copyright (C) 2003-2022 The SimGrid Team.
# This is distributed under the LGPL licence but please contact us for
# relicensing if you need. This is merely free software, no matter the licence.
#
# SimGrid needs unwind-ptrace on Linux and FreeBSD
if("${CMAKE_SYSTEM}" MATCHES "Linux|FreeBSD")
- set(LIBUNWIND_COMPONENTS ${LIBUNWIND_COMPONENTS} unwind-ptrace)
+ set(LIBUNWIND_COMPONENTS ${LIBUNWIND_COMPONENTS} unwind-ptrace unwind-generic)
endif()
#
# - Calls include_directories() on where libunwind.h lives
# - Calls link_directories() on where the libs live
-# Of course also need the core lib
+# Of course also need the core lib
set(LIBUNWIND_COMPONENTS ${LIBUNWIND_COMPONENTS} "unwind")
-# For some reason, some archs have an arch-specific while other do not.
-if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
- SET(LIBUNWIND_COMPONENTS ${LIBUNWIND_COMPONENTS} unwind-arm)
-elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
- SET(LIBUNWIND_COMPONENTS ${LIBUNWIND_COMPONENTS} unwind-x86_64)
-elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
- SET(LIBUNWIND_COMPONENTS ${LIBUNWIND_COMPONENTS} unwind-x86)
-endif()
-
-
message(STATUS "Looking for libunwind:")
-# Let's assume we have it, and invalidate if parts are missing
+# Let's assume we have it, and invalidate if parts are missing
SET(HAVE_LIBUNWIND 1)
#
# Search for the header file
-#
+#
find_path(PATH_LIBUNWIND_H "libunwind.h"
HINTS
if(PATH_LIBUNWIND_H)
string(REGEX REPLACE "/libunwind.h" "" PATH_LIBUNWIND_H "${PATH_LIBUNWIND_H}")
message(" Found libunwind.h in ${PATH_LIBUNWIND_H}")
- include_directories(${PATH_LIBUNWIND_H})
+ include_directories(${PATH_LIBUNWIND_H})
else()
message(" NOT FOUND libunwind.h")
SET(HAVE_LIBUNWIND 0)
string(REGEX REPLACE "/lib${component}.*[.]${LIB_EXE}$" "" PATH_LIBUNWIND_LIB_${component} "${PATH_LIBUNWIND_LIB_${component}}")
message(" Found lib${component}.${LIB_EXE} in ${PATH_LIBUNWIND_LIB_${component}}")
link_directories(${PATH_LIBUNWIND_LIB_${component}})
-
+
if(${component} STREQUAL "unwind" AND APPLE)
# Apple forbids to link directly against its libunwind implementation
# So let's comply to that stupid restriction and link against the System framework
else()
SET(LIBUNWIND_LIBRARIES "${LIBUNWIND_LIBRARIES} -l${component}")
endif()
-
+
else()
message(" Looking for lib${component}.${LIB_EXE} - not found")
SET(HAVE_LIBUNWIND 0)
#
# Conclude and cleanup
-#
+#
if(HAVE_LIBUNWIND)
message(STATUS "Dependencies induced by libunwind: ${LIBUNWIND_LIBRARIES}")
else()