summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils')
-rw-r--r--llvm/utils/gn/secondary/BUILD.gn5
-rw-r--r--llvm/utils/gn/secondary/libunwind/BUILD.gn5
-rw-r--r--llvm/utils/gn/secondary/libunwind/src/BUILD.gn124
3 files changed, 133 insertions, 1 deletions
diff --git a/llvm/utils/gn/secondary/BUILD.gn b/llvm/utils/gn/secondary/BUILD.gn
index 5fbddf93168..af0c85711c4 100644
--- a/llvm/utils/gn/secondary/BUILD.gn
+++ b/llvm/utils/gn/secondary/BUILD.gn
@@ -11,7 +11,10 @@ group("default") {
"//llvm/test",
]
if (current_os == "linux") {
- deps += [ "//compiler-rt" ]
+ deps += [
+ "//compiler-rt",
+ "//libunwind",
+ ]
}
if (current_os == "linux" || current_os == "android") {
deps += [ "//compiler-rt/test/hwasan" ]
diff --git a/llvm/utils/gn/secondary/libunwind/BUILD.gn b/llvm/utils/gn/secondary/libunwind/BUILD.gn
new file mode 100644
index 00000000000..b55d9c75808
--- /dev/null
+++ b/llvm/utils/gn/secondary/libunwind/BUILD.gn
@@ -0,0 +1,5 @@
+group("libunwind") {
+ deps = [
+ "//libunwind/src(//llvm/utils/gn/build/toolchain:stage2_unix)",
+ ]
+}
diff --git a/llvm/utils/gn/secondary/libunwind/src/BUILD.gn b/llvm/utils/gn/secondary/libunwind/src/BUILD.gn
new file mode 100644
index 00000000000..1e96b5643ad
--- /dev/null
+++ b/llvm/utils/gn/secondary/libunwind/src/BUILD.gn
@@ -0,0 +1,124 @@
+import("//clang/runtimes.gni")
+
+declare_args() {
+ # Build libunwind as a shared library.
+ libunwind_enable_shared = true
+
+ # Build libunwind as a static library.
+ libunwind_enable_static = true
+
+ # Do not export any symbols from the static library.
+ libunwind_hermetic_static_library = true
+}
+
+unwind_headers = [
+ "../include/libunwind.h",
+ "../include/unwind.h",
+]
+if (target_os == "mac") {
+ unwind_headers += [
+ # This comment prevents `gn format` from putting the file on the same line
+ # as `sources +=`, for sync_source_lists_from_cmake.py.
+ "../include/mach-o/compact_unwind_encoding.h",
+ ]
+}
+
+unwind_sources = [
+ "libunwind.cpp",
+ "Unwind-EHABI.cpp",
+ "Unwind-seh.cpp",
+ "UnwindLevel1.c",
+ "UnwindLevel1-gcc-ext.c",
+ "Unwind-sjlj.c",
+ "UnwindRegistersRestore.S",
+ "UnwindRegistersSave.S",
+ "AddressSpace.hpp",
+ "assembly.h",
+ "CompactUnwinder.hpp",
+ "config.h",
+ "dwarf2.h",
+ "DwarfInstructions.hpp",
+ "DwarfParser.hpp",
+ "libunwind_ext.h",
+ "Registers.hpp",
+ "RWMutex.hpp",
+ "UnwindCursor.hpp",
+]
+if (target_os == "mac") {
+ unwind_sources += [ "src/Unwind_AppleExtras.cpp" ]
+}
+
+config("unwind_config") {
+ cflags = []
+ cflags_c = [ "-std=c99" ]
+ cflags_cc = [ "-fno-rtti" ]
+ include_dirs = [ "//libunwind/include" ]
+ if (target_os == "mac") {
+ cflags += [ "-U__STRICT_ANSI__" ]
+ }
+}
+
+if (libunwind_enable_shared) {
+ shared_library("unwind_shared") {
+ output_dir = runtimes_dir
+ output_name = "unwind"
+ if (target_os == "linux" || target_os == "mac") {
+ cflags = [ "-fPIC" ]
+ ldflags = [ "-nostdlib++" ]
+ libs = [
+ "dl",
+ "pthread",
+ ]
+ }
+ if (target_os == "mac") {
+ ldflags += [
+ "-compatibility_version 1",
+ "-install_name /usr/lib/libunwind.1.dylib",
+ ]
+ }
+ sources = unwind_sources
+ public = unwind_headers
+ deps = [
+ "//compiler-rt/lib/builtins",
+ ]
+ configs += [ ":unwind_config" ]
+ configs -= [
+ "//llvm/utils/gn/build:no_exceptions",
+ "//llvm/utils/gn/build:no_rtti",
+ ]
+ }
+}
+
+if (libunwind_enable_static) {
+ static_library("unwind_static") {
+ output_dir = runtimes_dir
+ output_name = "unwind"
+ complete_static_lib = true
+ configs -= [ "//llvm/utils/gn/build:thin_archive" ]
+ sources = unwind_sources
+ public = unwind_headers
+ if (libunwind_hermetic_static_library) {
+ cflags = [ "-fvisibility=hidden" ]
+ cflags_cc = [ "-fvisibility-global-new-delete-hidden" ]
+ defines = [ "_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS" ]
+ }
+ deps = [
+ "//compiler-rt/lib/builtins",
+ ]
+ configs += [ ":unwind_config" ]
+ configs -= [
+ "//llvm/utils/gn/build:no_exceptions",
+ "//llvm/utils/gn/build:no_rtti",
+ ]
+ }
+}
+
+group("src") {
+ deps = []
+ if (libunwind_enable_shared) {
+ deps += [ ":unwind_shared" ]
+ }
+ if (libunwind_enable_static) {
+ deps += [ ":unwind_static" ]
+ }
+}
OpenPOWER on IntegriCloud