1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-06-03 09:42:38 +02:00
libunwind-eh_elf/src/Makefile.am
Matt Fischer eac65dc9b8 Add basic support for the QNX operating system
This change adds some special cases to allow libunwind to compile
for QNX.

* QNX's copy of <elf.h> and <link.h> reside in sys/ instead.  To deal
  with this, an AC_CHECK_HEADERS() was added to check for the files
  in both locations.
* Similarly, QNX does not have <endian.h>.  In cases where the file is
  not found, logic was added to refer to QNX-specific macros to determine
  endianness.
* The QCC compiler, which is a wrapper around GCC, cannot handle some
  standard GCC options.  Therefore, logic was added to check for QCC,
  and when it is found, to suppress the use of -lgcc, and to express the
  option -nostartfiles as -Wc,-nostartfiles instead, which is correctly
  passed on to the underlying GCC.
* Finally, the support file os-qnx.c was added, patterned after the existing
  os-*.c files.  Only local image lookup is currently supported (see the
  comments for more information), but this is sufficient for QNX, since
  ptrace is not supported there anyway, and that is the only case where the
  function is required to do remote image lookup.

Change-Id: Ie7934f94a7317bdde59335f2acd4c3a97c0384c1
2013-05-13 10:50:17 -05:00

676 lines
26 KiB
Makefile

SOVERSION=8:1:0 # See comments at end of file.
SETJMP_SO_VERSION=0:0:0
COREDUMP_SO_VERSION=0:0:0
#
# Don't link with start-files since we don't use any constructors/destructors:
#
COMMON_SO_LDFLAGS = $(LDFLAGS_NOSTARTFILES)
lib_LIBRARIES =
lib_LTLIBRARIES =
if !REMOTE_ONLY
lib_LTLIBRARIES += libunwind.la
if BUILD_PTRACE
lib_LTLIBRARIES += libunwind-ptrace.la
endif
if BUILD_COREDUMP
lib_LTLIBRARIES += libunwind-coredump.la
endif
endif
noinst_HEADERS =
noinst_LTLIBRARIES =
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libunwind-generic.pc
if !REMOTE_ONLY
pkgconfig_DATA += unwind/libunwind.pc
endif
if BUILD_PTRACE
pkgconfig_DATA += ptrace/libunwind-ptrace.pc
endif
if BUILD_SETJMP
pkgconfig_DATA += setjmp/libunwind-setjmp.pc
endif
if BUILD_COREDUMP
pkgconfig_DATA += coredump/libunwind-coredump.pc
endif
### libunwind-ptrace:
libunwind_ptrace_la_SOURCES = \
ptrace/_UPT_elf.c \
ptrace/_UPT_accessors.c ptrace/_UPT_access_fpreg.c \
ptrace/_UPT_access_mem.c ptrace/_UPT_access_reg.c \
ptrace/_UPT_create.c ptrace/_UPT_destroy.c \
ptrace/_UPT_find_proc_info.c ptrace/_UPT_get_dyn_info_list_addr.c \
ptrace/_UPT_put_unwind_info.c ptrace/_UPT_get_proc_name.c \
ptrace/_UPT_reg_offset.c ptrace/_UPT_resume.c
noinst_HEADERS += ptrace/_UPT_internal.h
### libunwind-coredump:
libunwind_coredump_la_SOURCES = \
coredump/_UCD_accessors.c \
coredump/_UCD_create.c \
coredump/_UCD_destroy.c \
coredump/_UCD_access_mem.c \
coredump/_UCD_elf_map_image.c \
coredump/_UCD_find_proc_info.c \
coredump/_UCD_get_proc_name.c \
\
coredump/_UPT_elf.c \
coredump/_UPT_access_fpreg.c \
coredump/_UPT_get_dyn_info_list_addr.c \
coredump/_UPT_put_unwind_info.c \
coredump/_UPT_resume.c
libunwind_coredump_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \
-version-info $(COREDUMP_SO_VERSION)
noinst_HEADERS += coredump/_UCD_internal.h
### libunwind-setjmp:
libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \
-version-info $(SETJMP_SO_VERSION)
if USE_ELF32
LIBUNWIND_ELF = libunwind-elf32.la
endif
if USE_ELF64
LIBUNWIND_ELF = libunwind-elf64.la
endif
if USE_ELFXX
LIBUNWIND_ELF = libunwind-elfxx.la
endif
libunwind_setjmp_la_LIBADD = $(LIBUNWIND_ELF) \
libunwind-$(arch).la \
libunwind.la -lc
libunwind_setjmp_la_SOURCES = setjmp/longjmp.c \
setjmp/siglongjmp.c
noinst_HEADERS += setjmp/setjmp_i.h
### libunwind:
libunwind_la_LIBADD =
# List of arch-independent files needed by both local-only and generic
# libraries:
libunwind_la_SOURCES_common = \
$(libunwind_la_SOURCES_os) \
mi/init.c mi/flush_cache.c mi/mempool.c mi/strerror.c
# List of arch-independent files needed by generic library (libunwind-$ARCH):
libunwind_la_SOURCES_generic = \
mi/Gdyn-extract.c mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c \
mi/Gget_accessors.c \
mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \
mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \
mi/Gget_reg.c mi/Gset_reg.c \
mi/Gget_fpreg.c mi/Gset_fpreg.c \
mi/Gset_caching_policy.c
if SUPPORT_CXX_EXCEPTIONS
libunwind_la_SOURCES_local_unwind = \
unwind/Backtrace.c unwind/DeleteException.c \
unwind/FindEnclosingFunction.c unwind/ForcedUnwind.c \
unwind/GetBSP.c unwind/GetCFA.c unwind/GetDataRelBase.c \
unwind/GetGR.c unwind/GetIP.c unwind/GetLanguageSpecificData.c \
unwind/GetRegionStart.c unwind/GetTextRelBase.c \
unwind/RaiseException.c unwind/Resume.c \
unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c \
unwind/GetIPInfo.c
# _ReadULEB()/_ReadSLEB() are needed for Intel C++ 8.0 compatibility
libunwind_la_SOURCES_os_linux_local = mi/_ReadULEB.c mi/_ReadSLEB.c
endif
# List of arch-independent files needed by local-only library (libunwind):
libunwind_la_SOURCES_local_nounwind = \
$(libunwind_la_SOURCES_os_local) \
mi/backtrace.c \
mi/dyn-cancel.c mi/dyn-info-list.c mi/dyn-register.c \
mi/Ldyn-extract.c mi/Lfind_dynamic_proc_info.c \
mi/Lget_accessors.c \
mi/Lget_proc_info_by_ip.c mi/Lget_proc_name.c \
mi/Lput_dynamic_unwind_info.c mi/Ldestroy_addr_space.c \
mi/Lget_reg.c mi/Lset_reg.c \
mi/Lget_fpreg.c mi/Lset_fpreg.c \
mi/Lset_caching_policy.c
libunwind_la_SOURCES_local = \
$(libunwind_la_SOURCES_local_nounwind) \
$(libunwind_la_SOURCES_local_unwind)
noinst_HEADERS += os-linux.h
libunwind_la_SOURCES_os_linux = os-linux.c
libunwind_la_SOURCES_os_hpux = os-hpux.c
libunwind_la_SOURCES_os_freebsd = os-freebsd.c
libunwind_la_SOURCES_os_qnx = os-qnx.c
libunwind_dwarf_common_la_SOURCES = dwarf/global.c
libunwind_dwarf_local_la_SOURCES = \
dwarf/Lexpr.c dwarf/Lfde.c dwarf/Lparser.c dwarf/Lpe.c dwarf/Lstep.c \
dwarf/Lfind_proc_info-lsb.c \
dwarf/Lfind_unwind_table.c
libunwind_dwarf_local_la_LIBADD = libunwind-dwarf-common.la
libunwind_dwarf_generic_la_SOURCES = \
dwarf/Gexpr.c dwarf/Gfde.c dwarf/Gparser.c dwarf/Gpe.c dwarf/Gstep.c \
dwarf/Gfind_proc_info-lsb.c \
dwarf/Gfind_unwind_table.c
libunwind_dwarf_generic_la_LIBADD = libunwind-dwarf-common.la
if USE_DWARF
noinst_LTLIBRARIES += libunwind-dwarf-common.la libunwind-dwarf-generic.la
if !REMOTE_ONLY
noinst_LTLIBRARIES += libunwind-dwarf-local.la
endif
libunwind_la_LIBADD += libunwind-dwarf-local.la
endif
noinst_HEADERS += elf32.h elf64.h elfxx.h
libunwind_elf32_la_SOURCES = elf32.c
libunwind_elf64_la_SOURCES = elf64.c
libunwind_elfxx_la_SOURCES = elfxx.c
noinst_LTLIBRARIES += $(LIBUNWIND_ELF)
libunwind_la_LIBADD += $(LIBUNWIND_ELF)
# The list of files that go into libunwind and libunwind-aarch64:
noinst_HEADERS += aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h
libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common) \
aarch64/is_fpreg.c aarch64/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \
$(libunwind_la_SOURCES_local) \
aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c \
aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c \
aarch64/Linit_local.c aarch64/Linit_remote.c \
aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c \
aarch64/Lstep.c
libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \
$(libunwind_la_SOURCES_generic) \
aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c \
aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c \
aarch64/Ginit_local.c aarch64/Ginit_remote.c \
aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c \
aarch64/Gstep.c
# The list of files that go into libunwind and libunwind-arm:
noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h
libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \
arm/is_fpreg.c arm/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \
$(libunwind_la_SOURCES_local) \
arm/getcontext.S \
arm/Lcreate_addr_space.c arm/Lget_proc_info.c arm/Lget_save_loc.c \
arm/Lglobal.c arm/Linit.c arm/Linit_local.c arm/Linit_remote.c \
arm/Lis_signal_frame.c arm/Lregs.c arm/Lresume.c arm/Lstep.c \
arm/Lex_tables.c
libunwind_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \
$(libunwind_la_SOURCES_generic) \
arm/Gcreate_addr_space.c arm/Gget_proc_info.c arm/Gget_save_loc.c \
arm/Gglobal.c arm/Ginit.c arm/Ginit_local.c arm/Ginit_remote.c \
arm/Gis_signal_frame.c arm/Gregs.c arm/Gresume.c arm/Gstep.c \
arm/Gex_tables.c
# The list of files that go both into libunwind and libunwind-ia64:
noinst_HEADERS += ia64/init.h ia64/offsets.h ia64/regs.h \
ia64/ucontext_i.h ia64/unwind_decoder.h ia64/unwind_i.h
libunwind_la_SOURCES_ia64_common = $(libunwind_la_SOURCES_common) \
ia64/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common) \
$(libunwind_la_SOURCES_local) \
\
ia64/dyn_info_list.S ia64/getcontext.S \
\
ia64/Lcreate_addr_space.c ia64/Lget_proc_info.c ia64/Lget_save_loc.c \
ia64/Lglobal.c ia64/Linit.c ia64/Linit_local.c ia64/Linit_remote.c \
ia64/Linstall_cursor.S ia64/Lis_signal_frame.c ia64/Lparser.c \
ia64/Lrbs.c ia64/Lregs.c ia64/Lresume.c ia64/Lscript.c ia64/Lstep.c \
ia64/Ltables.c ia64/Lfind_unwind_table.c
# The list of files that go into libunwind-ia64:
libunwind_ia64_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common) \
$(libunwind_la_SOURCES_generic) \
ia64/Gcreate_addr_space.c ia64/Gget_proc_info.c ia64/Gget_save_loc.c \
ia64/Gglobal.c ia64/Ginit.c ia64/Ginit_local.c ia64/Ginit_remote.c \
ia64/Ginstall_cursor.S ia64/Gis_signal_frame.c ia64/Gparser.c \
ia64/Grbs.c ia64/Gregs.c ia64/Gresume.c ia64/Gscript.c ia64/Gstep.c \
ia64/Gtables.c ia64/Gfind_unwind_table.c
# The list of files that go both into libunwind and libunwind-hppa:
noinst_HEADERS += hppa/init.h hppa/offsets.h hppa/unwind_i.h
libunwind_la_SOURCES_hppa_common = $(libunwind_la_SOURCES_common) \
hppa/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common) \
$(libunwind_la_SOURCES_local) \
hppa/getcontext.S hppa/setcontext.S \
hppa/Lcreate_addr_space.c hppa/Lget_save_loc.c hppa/Lglobal.c \
hppa/Linit.c hppa/Linit_local.c hppa/Linit_remote.c \
hppa/Lis_signal_frame.c hppa/Lget_proc_info.c hppa/Lregs.c \
hppa/Lresume.c hppa/Lstep.c
# The list of files that go into libunwind-hppa:
libunwind_hppa_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common) \
$(libunwind_la_SOURCES_generic) \
hppa/Gcreate_addr_space.c hppa/Gget_save_loc.c hppa/Gglobal.c \
hppa/Ginit.c hppa/Ginit_local.c hppa/Ginit_remote.c \
hppa/Gis_signal_frame.c hppa/Gget_proc_info.c hppa/Gregs.c \
hppa/Gresume.c hppa/Gstep.c
# The list of files that go info libunwind and libunwind-mips:
noinst_HEADERS += mips/init.h mips/offsets.h
libunwind_la_SOURCES_mips_common = $(libunwind_la_SOURCES_common) \
mips/is_fpreg.c mips/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common) \
$(libunwind_la_SOURCES_local) \
mips/getcontext.S \
mips/Lcreate_addr_space.c mips/Lget_proc_info.c mips/Lget_save_loc.c \
mips/Lglobal.c mips/Linit.c mips/Linit_local.c mips/Linit_remote.c \
mips/Lis_signal_frame.c mips/Lregs.c mips/Lresume.c mips/Lstep.c
libunwind_mips_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common) \
$(libunwind_la_SOURCES_generic) \
mips/Gcreate_addr_space.c mips/Gget_proc_info.c mips/Gget_save_loc.c \
mips/Gglobal.c mips/Ginit.c mips/Ginit_local.c mips/Ginit_remote.c \
mips/Gis_signal_frame.c mips/Gregs.c mips/Gresume.c mips/Gstep.c
# The list of files that go both into libunwind and libunwind-x86:
noinst_HEADERS += x86/init.h x86/offsets.h x86/unwind_i.h
libunwind_la_SOURCES_x86_common = $(libunwind_la_SOURCES_common) \
x86/is_fpreg.c x86/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common) \
$(libunwind_la_SOURCES_x86_os_local) \
$(libunwind_la_SOURCES_local) \
x86/Lcreate_addr_space.c x86/Lget_save_loc.c x86/Lglobal.c \
x86/Linit.c x86/Linit_local.c x86/Linit_remote.c \
x86/Lget_proc_info.c x86/Lregs.c \
x86/Lresume.c x86/Lstep.c
# The list of files that go into libunwind-x86:
libunwind_x86_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common) \
$(libunwind_la_SOURCES_x86_os) \
$(libunwind_la_SOURCES_generic) \
x86/Gcreate_addr_space.c x86/Gget_save_loc.c x86/Gglobal.c \
x86/Ginit.c x86/Ginit_local.c x86/Ginit_remote.c \
x86/Gget_proc_info.c x86/Gregs.c \
x86/Gresume.c x86/Gstep.c
# The list of files that go both into libunwind and libunwind-x86_64:
noinst_HEADERS += x86_64/offsets.h \
x86_64/init.h x86_64/unwind_i.h x86_64/ucontext_i.h
libunwind_la_SOURCES_x86_64_common = $(libunwind_la_SOURCES_common) \
x86_64/is_fpreg.c x86_64/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common) \
$(libunwind_la_SOURCES_x86_64_os_local) \
$(libunwind_la_SOURCES_local) \
x86_64/setcontext.S \
x86_64/Lcreate_addr_space.c x86_64/Lget_save_loc.c x86_64/Lglobal.c \
x86_64/Linit.c x86_64/Linit_local.c x86_64/Linit_remote.c \
x86_64/Lget_proc_info.c x86_64/Lregs.c x86_64/Lresume.c \
x86_64/Lstash_frame.c x86_64/Lstep.c x86_64/Ltrace.c x86_64/getcontext.S
# The list of files that go into libunwind-x86_64:
libunwind_x86_64_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common) \
$(libunwind_la_SOURCES_x86_64_os) \
$(libunwind_la_SOURCES_generic) \
x86_64/Gcreate_addr_space.c x86_64/Gget_save_loc.c x86_64/Gglobal.c \
x86_64/Ginit.c x86_64/Ginit_local.c x86_64/Ginit_remote.c \
x86_64/Gget_proc_info.c x86_64/Gregs.c x86_64/Gresume.c \
x86_64/Gstash_frame.c x86_64/Gstep.c x86_64/Gtrace.c
# The list of local files that go to Power 64 and 32:
libunwind_la_SOURCES_ppc = ppc/Lcreate_addr_space.c \
ppc/Lget_proc_info.c ppc/Lget_save_loc.c ppc/Linit_local.c \
ppc/Linit_remote.c ppc/Lis_signal_frame.c
# The list of generic files that go to Power 64 and 32:
libunwind_ppc_la_SOURCES_ppc_generic = ppc/Gcreate_addr_space.c \
ppc/Gget_proc_info.c ppc/Gget_save_loc.c ppc/Ginit_local.c \
ppc/Ginit_remote.c ppc/Gis_signal_frame.c
# The list of files that go both into libunwind and libunwind-ppc32:
noinst_HEADERS += ppc32/init.h ppc32/unwind_i.h ppc32/ucontext_i.h
libunwind_la_SOURCES_ppc32_common = $(libunwind_la_SOURCES_common) \
ppc32/is_fpreg.c ppc32/regname.c ppc32/get_func_addr.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \
$(libunwind_la_SOURCES_local) \
$(libunwind_la_SOURCES_ppc) \
ppc32/Lglobal.c ppc32/Linit.c \
ppc32/Lregs.c ppc32/Lresume.c ppc32/Lstep.c
# The list of files that go into libunwind-ppc32:
libunwind_ppc32_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \
$(libunwind_la_SOURCES_generic) \
$(libunwind_ppc_la_SOURCES_ppc_generic) \
ppc32/Gglobal.c ppc32/Ginit.c \
ppc32/Gregs.c ppc32/Gresume.c ppc32/Gstep.c
# The list of files that go both into libunwind and libunwind-ppc64:
noinst_HEADERS += ppc64/init.h ppc64/unwind_i.h ppc64/ucontext_i.h
libunwind_la_SOURCES_ppc64_common = $(libunwind_la_SOURCES_common) \
ppc64/is_fpreg.c ppc64/regname.c ppc64/get_func_addr.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \
$(libunwind_la_SOURCES_local) \
$(libunwind_la_SOURCES_ppc) \
ppc64/Lglobal.c ppc64/Linit.c \
ppc64/Lregs.c ppc64/Lresume.c ppc64/Lstep.c
# The list of files that go into libunwind-ppc64:
libunwind_ppc64_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \
$(libunwind_la_SOURCES_generic) \
$(libunwind_ppc_la_SOURCES_ppc_generic) \
ppc64/Gglobal.c ppc64/Ginit.c \
ppc64/Gregs.c ppc64/Gresume.c ppc64/Gstep.c
# The list of files that go into libunwind and libunwind-sh:
noinst_HEADERS += sh/init.h sh/offsets.h sh/unwind_i.h
libunwind_la_SOURCES_sh_common = $(libunwind_la_SOURCES_common) \
sh/is_fpreg.c sh/regname.c
# The list of files that go into libunwind:
libunwind_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common) \
$(libunwind_la_SOURCES_local) \
sh/Lcreate_addr_space.c sh/Lget_proc_info.c sh/Lget_save_loc.c \
sh/Lglobal.c sh/Linit.c sh/Linit_local.c sh/Linit_remote.c \
sh/Lis_signal_frame.c sh/Lregs.c sh/Lresume.c sh/Lstep.c
libunwind_sh_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common) \
$(libunwind_la_SOURCES_generic) \
sh/Gcreate_addr_space.c sh/Gget_proc_info.c sh/Gget_save_loc.c \
sh/Gglobal.c sh/Ginit.c sh/Ginit_local.c sh/Ginit_remote.c \
sh/Gis_signal_frame.c sh/Gregs.c sh/Gresume.c sh/Gstep.c
if REMOTE_ONLY
install-exec-hook:
# Nothing to do here....
else
#
# This is not ideal, but I know of no other way to install an
# alias for a library. For the shared version, we have to do
# a file check before creating the link, because it isn't going
# to be there if the user configured with --disable-shared.
#
install-exec-hook:
cd $(DESTDIR)$(libdir) && $(LN_S) -f libunwind-$(arch).a libunwind-generic.a
if test -f $(DESTDIR)$(libdir)/libunwind-$(arch).so; then \
cd $(DESTDIR)$(libdir) && $(LN_S) -f libunwind-$(arch).so \
libunwind-generic.so; \
fi
endif
if OS_LINUX
libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_linux)
libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_linux_local)
libunwind_la_SOURCES_x86_os = x86/Gos-linux.c
libunwind_x86_la_SOURCES_os = x86/getcontext-linux.S
libunwind_la_SOURCES_x86_os_local = x86/Los-linux.c
libunwind_la_SOURCES_x86_64_os = x86_64/Gos-linux.c
libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-linux.c
libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_linux.c
endif
if OS_HPUX
libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_hpux)
libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_hpux_local)
endif
if OS_FREEBSD
libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_freebsd)
libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_freebsd_local)
libunwind_la_SOURCES_x86_os = x86/Gos-freebsd.c
libunwind_x86_la_SOURCES_os = x86/getcontext-freebsd.S
libunwind_la_SOURCES_x86_os_local = x86/Los-freebsd.c
libunwind_la_SOURCES_x86_64_os = x86_64/Gos-freebsd.c
libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-freebsd.c
libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c
endif
if OS_QNX
libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_qnx)
libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_qnx_local)
endif
if ARCH_AARCH64
lib_LTLIBRARIES += libunwind-aarch64.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64)
libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64)
libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_aarch64_la_LIBADD = libunwind-dwarf-generic.la
libunwind_aarch64_la_LIBADD += libunwind-elf64.la
if !REMOTE_ONLY
libunwind_aarch64_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += aarch64/siglongjmp.S
else
if ARCH_ARM
lib_LTLIBRARIES += libunwind-arm.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm)
libunwind_arm_la_SOURCES = $(libunwind_arm_la_SOURCES_arm)
libunwind_arm_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_arm_la_LIBADD = libunwind-dwarf-generic.la
libunwind_arm_la_LIBADD += libunwind-elf32.la
if !REMOTE_ONLY
libunwind_arm_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += arm/siglongjmp.S
else
if ARCH_IA64
BUILT_SOURCES = Gcursor_i.h Lcursor_i.h
mk_Gcursor_i.s: $(srcdir)/ia64/mk_Gcursor_i.c
$(COMPILE) -S "$(srcdir)/ia64/mk_Gcursor_i.c" -o mk_Gcursor_i.s
mk_Lcursor_i.s: $(srcdir)/ia64/mk_Lcursor_i.c
$(COMPILE) -S "$(srcdir)/ia64/mk_Lcursor_i.c" -o mk_Lcursor_i.s
Gcursor_i.h: mk_Gcursor_i.s
"$(srcdir)/ia64/mk_cursor_i" mk_Gcursor_i.s > Gcursor_i.h
Lcursor_i.h: mk_Lcursor_i.s
"$(srcdir)/ia64/mk_cursor_i" mk_Lcursor_i.s > Lcursor_i.h
lib_LTLIBRARIES += libunwind-ia64.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_ia64)
libunwind_ia64_la_SOURCES = $(libunwind_ia64_la_SOURCES_ia64)
libunwind_ia64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_ia64_la_LIBADD = libunwind-elf64.la
if !REMOTE_ONLY
libunwind_ia64_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += ia64/setjmp.S ia64/sigsetjmp.S \
ia64/longjmp.S ia64/siglongjmp.S
else
if ARCH_HPPA
lib_LTLIBRARIES += libunwind-hppa.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_hppa)
libunwind_hppa_la_SOURCES = $(libunwind_hppa_la_SOURCES_hppa)
libunwind_hppa_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_hppa_la_LIBADD = libunwind-dwarf-generic.la
libunwind_hppa_la_LIBADD += libunwind-elf32.la
if !REMOTE_ONLY
libunwind_hppa_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S
else
if ARCH_MIPS
lib_LTLIBRARIES += libunwind-mips.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_mips)
libunwind_mips_la_SOURCES = $(libunwind_mips_la_SOURCES_mips)
libunwind_mips_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_mips_la_LIBADD = libunwind-dwarf-generic.la
libunwind_mips_la_LIBADD += libunwind-elfxx.la
if !REMOTE_ONLY
libunwind_mips_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += mips/siglongjmp.S
else
if ARCH_X86
lib_LTLIBRARIES += libunwind-x86.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86) $(libunwind_x86_la_SOURCES_os)
libunwind_x86_la_SOURCES = $(libunwind_x86_la_SOURCES_x86)
libunwind_x86_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_x86_la_LIBADD = libunwind-dwarf-generic.la
libunwind_x86_la_LIBADD += libunwind-elf32.la
if !REMOTE_ONLY
libunwind_x86_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S
else
if ARCH_X86_64
lib_LTLIBRARIES += libunwind-x86_64.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86_64)
libunwind_x86_64_la_SOURCES = $(libunwind_x86_64_la_SOURCES_x86_64)
libunwind_x86_64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_x86_64_la_LIBADD = libunwind-dwarf-generic.la
libunwind_x86_64_la_LIBADD += libunwind-elf64.la
if !REMOTE_ONLY
libunwind_x86_64_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S
else
if ARCH_PPC32
lib_LTLIBRARIES += libunwind-ppc32.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc32)
libunwind_ppc32_la_SOURCES = $(libunwind_ppc32_la_SOURCES_ppc32)
libunwind_ppc32_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_ppc32_la_LIBADD = libunwind-dwarf-generic.la
libunwind_ppc32_la_LIBADD += libunwind-elf32.la
if !REMOTE_ONLY
libunwind_ppc32_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
else
if ARCH_PPC64
lib_LTLIBRARIES += libunwind-ppc64.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc64)
libunwind_ppc64_la_SOURCES = $(libunwind_ppc64_la_SOURCES_ppc64)
libunwind_ppc64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_ppc64_la_LIBADD = libunwind-dwarf-generic.la
libunwind_ppc64_la_LIBADD += libunwind-elf64.la
if !REMOTE_ONLY
libunwind_ppc64_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
else
if ARCH_SH
lib_LTLIBRARIES += libunwind-sh.la
libunwind_la_SOURCES = $(libunwind_la_SOURCES_sh)
libunwind_sh_la_SOURCES = $(libunwind_sh_la_SOURCES_sh)
libunwind_sh_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
libunwind_sh_la_LIBADD = libunwind-dwarf-generic.la
libunwind_sh_la_LIBADD += libunwind-elf32.la
if !REMOTE_ONLY
libunwind_sh_la_LIBADD += libunwind.la -lc
endif
libunwind_setjmp_la_SOURCES += sh/siglongjmp.S
endif # ARCH_SH
endif # ARCH_PPC64
endif # ARCH_PPC32
endif # ARCH_X86_64
endif # ARCH_X86
endif # ARCH_MIPS
endif # ARCH_HPPA
endif # ARCH_IA64
endif # ARCH_ARM
endif # ARCH_AARCH64
# libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
# at the end.
if BUILD_SETJMP
lib_LTLIBRARIES += libunwind-setjmp.la
endif
#
# Don't link with standard libraries, because those may mention
# libunwind already.
#
libunwind_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -XCClinker -nostdlib \
$(LDFLAGS_STATIC_LIBCXA) -version-info $(SOVERSION)
libunwind_la_LIBADD += -lc $(LIBCRTS)
if HAVE_LZMA
libunwind_la_LIBADD += -llzma
endif
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I.
AM_CCASFLAGS = $(AM_CPPFLAGS)
noinst_HEADERS += unwind/unwind-internal.h
EXTRA_DIST = $(libunwind_la_SOURCES_aarch64) \
$(libunwind_la_SOURCES_arm) \
$(libunwind_la_SOURCES_hppa) \
$(libunwind_la_SOURCES_ia64) \
$(libunwind_la_SOURCES_mips) \
$(libunwind_la_SOURCES_sh) \
$(libunwind_la_SOURCES_x86) \
$(libunwind_la_SOURCES_os_freebsd) \
$(libunwind_la_SOURCES_os_linux) \
$(libunwind_la_SOURCES_os_hpux) \
$(libunwind_la_SOURCES_os_qnx) \
$(libunwind_la_SOURCES_common) \
$(libunwind_la_SOURCES_local) \
$(libunwind_la_SOURCES_generic) \
$(libunwind_aarch64_la_SOURCES_aarch64) \
$(libunwind_arm_la_SOURCES_arm) \
$(libunwind_hppa_la_SOURCES_hppa) \
$(libunwind_ia64_la_SOURCES_ia64) \
$(libunwind_mips_la_SOURCES_mips) \
$(libunwind_sh_la_SOURCES_sh) \
$(libunwind_x86_la_SOURCES_x86) \
$(libunwind_x86_64_la_SOURCES_x86_64)
MAINTAINERCLEANFILES = Makefile.in
# The -version-info flag accepts an argument of the form
# `current[:revision[:age]]'. So, passing `-version-info 3:12:1' sets
# current to 3, revision to 12, and age to 1.
# If either revision or age are omitted, they default to 0. Also note
# that age must be less than or equal to the current interface number.
# Here are a set of rules to help you update your library version
# information:
# 1. Start with version information of `0:0:0' for each libtool
# library.
# 2. Update the version information only immediately before a public
# release of your software. More frequent updates are unnecessary,
# and only guarantee that the current interface number gets larger
# faster.
# 3. If the library source code has changed at all since the last
# update, then increment revision (`c:r:a' becomes `c:r+1:a').
# 4. If any interfaces have been added, removed, or changed since the
# last update, increment current, and set revision to 0.
# 5. If any interfaces have been added since the last public release,
# then increment age.
# 6. If any interfaces have been removed since the last public
# release, then set age to 0.