logan created this revision.
logan added reviewers: mclow.lists, rengolin, EricWF, danalbert, thakis.
logan added a subscriber: cfe-commits.

This commit refines the code for libunwind lookup.

First, this commit will always search for libunwind no matter LLVM
unwinder is enabled or not.  We have to do so because we need the
modified "unwind.h" from libunwind.  (Note: <unwind.h> which is bundled
with clang/gcc is not sufficient.)

Second, this commit removes LIBCXXABI_LIBUNWIND_INCLUDE_INTERNAL and
refines the find_path() function.  Now, it looks similar to the one for
libc++.

Third, this commit removes LIBCXXABI_LIBUNWIND_SOURCES since it haven't
been used for a while.  (Note: The reference to "libunwind_ext.h" has
been removed since r241993.)

https://reviews.llvm.org/D24084

Files:
  CMakeLists.txt

Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -137,6 +137,7 @@
   message(FATAL_ERROR "libc++abi must be built as either a shared or static 
library.")
 endif()
 
+# Find libc++ include path and source path.
 find_path(
   LIBCXXABI_LIBCXX_INCLUDES
   vector
@@ -167,6 +168,25 @@
 set(LIBCXXABI_LIBCXX_PATH "${LIBCXXABI_LIBCXX_PATH}" CACHE PATH
     "Specify path to libc++ source." FORCE)
 
+# Find libunwind include path (for unwind.h)
+find_path(
+  LIBCXXABI_LIBUNWIND_INCLUDES
+  libunwind.h
+  PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES}
+        ${LIBCXXABI_LIBUNWIND_PATH}/include
+        ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES}
+        ${LLVM_MAIN_SRC_DIR}/projects/libunwind/include
+  NO_DEFAULT_PATH
+)
+
+if (LIBCXXABI_LIBUNWIND_INCLUDES STREQUAL 
"LIBCXXABI_LIBUNWIND_INCLUDES-NOTFOUND")
+  message(WARNING "LIBCXXABI_LIBUNWIND_INCLUDES was not specified and couldn't 
be infered.")
+  set(LIBCXXABI_LIBUNWIND_INCLUDES "")
+endif()
+
+set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH
+    "Specify path to libunwind includes." FORCE)
+
 
#===============================================================================
 # Configure System
 
#===============================================================================
@@ -351,40 +371,13 @@
 # Setup Source Code
 
#===============================================================================
 
-set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH
-    "Specify path to libunwind includes." FORCE)
-set(LIBCXXABI_LIBUNWIND_PATH "${LIBCXXABI_LIBUNWIND_PATH}" CACHE PATH
-    "Specify path to libunwind source." FORCE)
+# Add libunwind include to header search path (for unwind.h)
+if (LIBCXXABI_LIBUNWIND_INCLUDES)
+  include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES}")
+endif()
 
+# Add libc++abi include to header search path.
 include_directories(include)
-if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM)
-  find_path(
-    LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL
-    libunwind.h
-    PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES}
-          ${LIBCXXABI_LIBUNWIND_PATH}/include
-          ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES}
-          ${LLVM_MAIN_SRC_DIR}/projects/libunwind/include
-    NO_DEFAULT_PATH
-  )
-
-  find_path(
-    LIBCXXABI_LIBUNWIND_SOURCES
-    libunwind_ext.h
-    PATHS ${LIBCXXABI_LIBUNWIND_PATH}/src/
-          ${LIBCXXABI_LIBUNWIND_INCLUDES}/../src/
-          ${LLVM_MAIN_SRC_DIR}/projects/libunwind/src/
-    NO_DEFAULT_PATH
-  )
-
-  if (LIBCXXABI_LIBUNWIND_SOURCES STREQUAL 
"LIBCXXABI_LIBUNWIND_SOURCES-NOTFOUND")
-    message(WARNING "LIBCXXABI_LIBUNWIND_SOURCES was not specified and 
couldn't be infered.")
-    set(LIBCXXABI_LIBUNWIND_SOURCES "")
-  endif()
-
-  include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL}")
-  include_directories("${LIBCXXABI_LIBUNWIND_SOURCES}")
-endif()
 
 # Add source code. This also contains all of the logic for deciding linker 
flags
 # soname, etc...


Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -137,6 +137,7 @@
   message(FATAL_ERROR "libc++abi must be built as either a shared or static library.")
 endif()
 
+# Find libc++ include path and source path.
 find_path(
   LIBCXXABI_LIBCXX_INCLUDES
   vector
@@ -167,6 +168,25 @@
 set(LIBCXXABI_LIBCXX_PATH "${LIBCXXABI_LIBCXX_PATH}" CACHE PATH
     "Specify path to libc++ source." FORCE)
 
+# Find libunwind include path (for unwind.h)
+find_path(
+  LIBCXXABI_LIBUNWIND_INCLUDES
+  libunwind.h
+  PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES}
+        ${LIBCXXABI_LIBUNWIND_PATH}/include
+        ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES}
+        ${LLVM_MAIN_SRC_DIR}/projects/libunwind/include
+  NO_DEFAULT_PATH
+)
+
+if (LIBCXXABI_LIBUNWIND_INCLUDES STREQUAL "LIBCXXABI_LIBUNWIND_INCLUDES-NOTFOUND")
+  message(WARNING "LIBCXXABI_LIBUNWIND_INCLUDES was not specified and couldn't be infered.")
+  set(LIBCXXABI_LIBUNWIND_INCLUDES "")
+endif()
+
+set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH
+    "Specify path to libunwind includes." FORCE)
+
 #===============================================================================
 # Configure System
 #===============================================================================
@@ -351,40 +371,13 @@
 # Setup Source Code
 #===============================================================================
 
-set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH
-    "Specify path to libunwind includes." FORCE)
-set(LIBCXXABI_LIBUNWIND_PATH "${LIBCXXABI_LIBUNWIND_PATH}" CACHE PATH
-    "Specify path to libunwind source." FORCE)
+# Add libunwind include to header search path (for unwind.h)
+if (LIBCXXABI_LIBUNWIND_INCLUDES)
+  include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES}")
+endif()
 
+# Add libc++abi include to header search path.
 include_directories(include)
-if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM)
-  find_path(
-    LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL
-    libunwind.h
-    PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES}
-          ${LIBCXXABI_LIBUNWIND_PATH}/include
-          ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES}
-          ${LLVM_MAIN_SRC_DIR}/projects/libunwind/include
-    NO_DEFAULT_PATH
-  )
-
-  find_path(
-    LIBCXXABI_LIBUNWIND_SOURCES
-    libunwind_ext.h
-    PATHS ${LIBCXXABI_LIBUNWIND_PATH}/src/
-          ${LIBCXXABI_LIBUNWIND_INCLUDES}/../src/
-          ${LLVM_MAIN_SRC_DIR}/projects/libunwind/src/
-    NO_DEFAULT_PATH
-  )
-
-  if (LIBCXXABI_LIBUNWIND_SOURCES STREQUAL "LIBCXXABI_LIBUNWIND_SOURCES-NOTFOUND")
-    message(WARNING "LIBCXXABI_LIBUNWIND_SOURCES was not specified and couldn't be infered.")
-    set(LIBCXXABI_LIBUNWIND_SOURCES "")
-  endif()
-
-  include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL}")
-  include_directories("${LIBCXXABI_LIBUNWIND_SOURCES}")
-endif()
 
 # Add source code. This also contains all of the logic for deciding linker flags
 # soname, etc...
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to