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)
# SGX_SDK ?= /opt/intel/sgxsdk

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)
# libunwind_coredump_la_LIBADD = $(LIBLZMA)
# noinst_HEADERS += coredump/_UCD_internal.h coredump/_UCD_lib.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

# List of arch-independent files needed by generic library (libunwind-$ARCH):
libunwind_la_SOURCES_generic =						\
	mi/Gdyn-extract.c mi/Gfind_dynamic_proc_info.c	\
	mi/Gget_accessors.c						\
	mi/Gget_proc_name.c			\
	mi/Gput_dynamic_unwind_info.c		\
	mi/Gget_reg.c mi/Gset_reg.c					\
	mi/Gset_caching_policy.c

if SUPPORT_CXX_EXCEPTIONS
libunwind_la_SOURCES_local_unwind =					\
	unwind/Backtrace.c			\
	unwind/GetDataRelBase.c			\
	unwind/GetCFA.c			\
	unwind/FindEnclosingFunction.c		\
	unwind/DeleteException.c			\
	unwind/GetIPInfo.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

#  _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/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					\
	mi/Lset_cache_size.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/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/Gfind_proc_info-lsb.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
libunwind_elf32_la_LIBADD  = $(LIBLZMA)
libunwind_elf64_la_LIBADD  = $(LIBLZMA)
libunwind_elfxx_la_LIBADD  = $(LIBLZMA)

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/Lapply_reg_state.c aarch64/Lreg_states_iterate.c	    \
# 	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/Lstash_frame.c aarch64/Lstep.c aarch64/Ltrace.c		    \
# 	aarch64/getcontext.S

# libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \
# 	$(libunwind_la_SOURCES_generic)					      \
# 	aarch64/Gapply_reg_state.c aarch64/Greg_states_iterate.c	      \
# 	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/Gstash_frame.c aarch64/Gstep.c aarch64/Gtrace.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_arm_os_local)				    \
# 	$(libunwind_la_SOURCES_local)					    \
# 	arm/getcontext.S						    \
# 	arm/Lapply_reg_state.c arm/Lreg_states_iterate.c		    \
# 	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/Lregs.c arm/Lresume.c arm/Lstep.c				    \
# 	arm/Lex_tables.c arm/Lstash_frame.c arm/Ltrace.c

# # The list of files that go into libunwind-arm:
# libunwind_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common)	    \
# 	$(libunwind_la_SOURCES_arm_os)					    \
# 	$(libunwind_la_SOURCES_generic)					    \
# 	arm/Gapply_reg_state.c arm/Greg_states_iterate.c		    \
# 	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/Gregs.c arm/Gresume.c arm/Gstep.c				    \
# 	arm/Gex_tables.c arm/Gstash_frame.c arm/Gtrace.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/Lapply_reg_state.c ia64/Lreg_states_iterate.c		     \
# 	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/Gapply_reg_state.c ia64/Greg_states_iterate.c		     \
# 	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/Lapply_reg_state.c hppa/Lreg_states_iterate.c		\
# 	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/Gapply_reg_state.c hppa/Greg_states_iterate.c		\
# 	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 mips/unwind_i.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/Lapply_reg_state.c mips/Lreg_states_iterate.c		    \
# 	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/Gapply_reg_state.c mips/Greg_states_iterate.c		    \
# 	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 info libunwind and libunwind-tilegx:
# noinst_HEADERS += tilegx/init.h tilegx/offsets.h tilegx/unwind_i.h
# libunwind_la_SOURCES_tilegx_common = $(libunwind_la_SOURCES_common)	    \
# 	tilegx/is_fpreg.c tilegx/regname.c

# # The list of files that go into libunwind:
# libunwind_la_SOURCES_tilegx = $(libunwind_la_SOURCES_tilegx_common)		    \
# 	$(libunwind_la_SOURCES_local)					    \
# 	tilegx/getcontext.S						\
# 	tilegx/Lapply_reg_state.c tilegx/Lreg_states_iterate.c		    \
# 	tilegx/Lcreate_addr_space.c tilegx/Lget_proc_info.c tilegx/Lget_save_loc.c   \
# 	tilegx/Lglobal.c tilegx/Linit.c tilegx/Linit_local.c tilegx/Linit_remote.c  \
# 	tilegx/Lis_signal_frame.c tilegx/Lregs.c tilegx/Lresume.c tilegx/Lstep.c

# libunwind_tilegx_la_SOURCES_tilegx = $(libunwind_la_SOURCES_tilegx_common)	    \
# 	$(libunwind_la_SOURCES_generic)					    \
# 	tilegx/Gapply_reg_state.c tilegx/Greg_states_iterate.c			     \
# 	tilegx/Gcreate_addr_space.c tilegx/Gget_proc_info.c tilegx/Gget_save_loc.c   \
# 	tilegx/Gglobal.c tilegx/Ginit.c tilegx/Ginit_local.c tilegx/Ginit_remote.c	    \
# 	tilegx/Gis_signal_frame.c tilegx/Gregs.c tilegx/Gresume.c tilegx/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/Lapply_reg_state.c x86/Lreg_states_iterate.c		\
# 	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/Gapply_reg_state.c x86/Greg_states_iterate.c		\
# 	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

# 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/Lapply_reg_state.c x86_64/Lreg_states_iterate.c		    \
	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/Gglobal.c \
	x86_64/Ginit.c x86_64/Ginit_local.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/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/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/Lapply_reg_state.c ppc32/Lreg_states_iterate.c		\
# 	ppc32/Lcreate_addr_space.c					\
# 	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/Gapply_reg_state.c ppc32/Greg_states_iterate.c		\
# 	ppc32/Gcreate_addr_space.c					\
# 	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/Lapply_reg_state.c ppc64/Lreg_states_iterate.c		\
# 	ppc64/Lcreate_addr_space.c					\
# 	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/Gapply_reg_state.c ppc64/Greg_states_iterate.c		\
# 	ppc64/Gcreate_addr_space.c					\
# 	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/Lapply_reg_state.c sh/Lreg_states_iterate.c			\
# 	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/Gapply_reg_state.c sh/Greg_states_iterate.c			\
# 	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:
	if test -f $(DESTDIR)$(libdir)/libunwind-$(arch).a; then \
		cd $(DESTDIR)$(libdir) && $(LN_S) -f libunwind-$(arch).a libunwind-generic.a; \
	fi
	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_la_SOURCES_arm_os          = arm/Gos-linux.c
 libunwind_la_SOURCES_arm_os_local    = arm/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_la_SOURCES_arm_os          = arm/Gos-freebsd.c
 libunwind_la_SOURCES_arm_os_local    = arm/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)
 libunwind_la_SOURCES_arm_os          = arm/Gos-other.c
 libunwind_la_SOURCES_arm_os_local    = arm/Los-other.c
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_TILEGX
 lib_LTLIBRARIES += libunwind-tilegx.la
 libunwind_la_SOURCES = $(libunwind_la_SOURCES_tilegx)
 libunwind_tilegx_la_SOURCES = $(libunwind_tilegx_la_SOURCES_tilegx)
 libunwind_tilegx_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
 libunwind_tilegx_la_LIBADD = libunwind-dwarf-generic.la
 libunwind_tilegx_la_LIBADD += libunwind-elfxx.la
if !REMOTE_ONLY
 libunwind_tilegx_la_LIBADD += libunwind.la -lc
endif
 libunwind_setjmp_la_SOURCES += tilegx/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_TILEGX
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)
libunwind_la_LIBADD += $(LIBLZMA)

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_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.
