SOVERSION=8:0:0		# See comments at end of file.
SETJMP_SO_VERSION=0:0:0
#
# Don't link with start-files since we don't use any constructors/destructors:
#
COMMON_SO_LDFLAGS =	-XCClinker -nostartfiles
SGX_SDK ?= /opt/intel/sgxsdk

lib_LIBRARIES =
lib_LTLIBRARIES =
if !REMOTE_ONLY
#lib_LIBRARIES += libunwind-ptrace.a libunwind-coredump.a
lib_LTLIBRARIES += libunwind.la
endif

noinst_HEADERS =
noinst_LTLIBRARIES =

### libunwind-ptrace:
#libunwind_ptrace_a_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_a_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
#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/Gget_accessors.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-info-list.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_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_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 = se-libc-stubs.c se-iterate-phdr.c
libunwind_elf64_la_SOURCES = se-libc-stubs.c se-iterate-phdr.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-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					    \
#	arm/ex_tables.h
#
## 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/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

## 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
#
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:
	$(LN_S) -f libunwind-$(arch).a  $(DESTDIR)$(libdir)/libunwind-generic.a
	if test -f $(DESTDIR)$(libdir)/libunwind-$(arch).so; then \
	    $(LN_S) -f libunwind-$(arch).so \
		$(DESTDIR)$(libdir)/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_a_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_a_SOURCES += coredump/_UCD_access_reg_freebsd.c
endif

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
 ia64_mk_Gcursor_i_SOURCES = ia64/mk_Gcursor_i.c
 ia64_mk_Lcursor_i_SOURCES = ia64/mk_Lcursor_i.c
 noinst_PROGRAMS = ia64/mk_Gcursor_i ia64/mk_Lcursor_i
 BUILT_SOURCES = Gcursor_i.h Lcursor_i.h
Gcursor_i.h: ia64/mk_Gcursor_i
	ia64/mk_Gcursor_i > $@
Lcursor_i.h: ia64/mk_Lcursor_i
	ia64/mk_Lcursor_i > $@

 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

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

# libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
# at the end.
if !REMOTE_ONLY
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)

AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I.
AM_CPPFLAGS+= -I$(SGX_SDK)/include/
AM_CCASFLAGS = $(AM_CPPFLAGS)
noinst_HEADERS += unwind/unwind-internal.h

EXTRA_DIST =	$(libunwind_la_SOURCES_arm)			\
		$(libunwind_la_SOURCES_hppa)			\
		$(libunwind_la_SOURCES_ia64)			\
		$(libunwind_la_SOURCES_mips)			\
		$(libunwind_la_SOURCES_x86)			\
		$(libunwind_la_SOURCES_os_freebsd)		\
		$(libunwind_la_SOURCES_os_linux)		\
		$(libunwind_la_SOURCES_os_hpux)			\
		$(libunwind_la_SOURCES_common)			\
		$(libunwind_la_SOURCES_local)			\
		$(libunwind_la_SOURCES_generic)			\
		$(libunwind_arm_la_SOURCES_arm)			\
		$(libunwind_hppa_la_SOURCES_hppa)		\
		$(libunwind_ia64_la_SOURCES_ia64)		\
		$(libunwind_mips_la_SOURCES_mips)		\
		$(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.
