Home | History | Annotate | Download | only in src
      1 SOVERSION=8:1:0		# See comments at end of file.
      2 SETJMP_SO_VERSION=0:0:0
      3 COREDUMP_SO_VERSION=0:0:0
      4 #
      5 # Don't link with start-files since we don't use any constructors/destructors:
      6 #
      7 COMMON_SO_LDFLAGS = $(LDFLAGS_NOSTARTFILES)
      8 
      9 lib_LIBRARIES =
     10 lib_LTLIBRARIES =
     11 if !REMOTE_ONLY
     12 lib_LTLIBRARIES += libunwind.la
     13 if BUILD_PTRACE
     14 lib_LTLIBRARIES += libunwind-ptrace.la
     15 endif
     16 if BUILD_COREDUMP
     17 lib_LTLIBRARIES += libunwind-coredump.la
     18 endif
     19 endif
     20 
     21 noinst_HEADERS =
     22 noinst_LTLIBRARIES =
     23 
     24 pkgconfigdir = $(libdir)/pkgconfig
     25 pkgconfig_DATA = libunwind-generic.pc
     26 
     27 if !REMOTE_ONLY
     28 pkgconfig_DATA += unwind/libunwind.pc
     29 endif
     30 
     31 if BUILD_PTRACE
     32 pkgconfig_DATA += ptrace/libunwind-ptrace.pc
     33 endif
     34 
     35 if BUILD_SETJMP
     36 pkgconfig_DATA += setjmp/libunwind-setjmp.pc
     37 endif
     38 
     39 if BUILD_COREDUMP
     40 pkgconfig_DATA += coredump/libunwind-coredump.pc
     41 endif
     42 
     43 ### libunwind-ptrace:
     44 libunwind_ptrace_la_SOURCES =						  \
     45 	ptrace/_UPT_elf.c						  \
     46 	ptrace/_UPT_accessors.c ptrace/_UPT_access_fpreg.c		  \
     47 	ptrace/_UPT_access_mem.c ptrace/_UPT_access_reg.c		  \
     48 	ptrace/_UPT_create.c ptrace/_UPT_destroy.c			  \
     49 	ptrace/_UPT_find_proc_info.c ptrace/_UPT_get_dyn_info_list_addr.c \
     50 	ptrace/_UPT_put_unwind_info.c ptrace/_UPT_get_proc_name.c	  \
     51 	ptrace/_UPT_reg_offset.c ptrace/_UPT_resume.c
     52 noinst_HEADERS += ptrace/_UPT_internal.h
     53 
     54 ### libunwind-coredump:
     55 libunwind_coredump_la_SOURCES = \
     56 	coredump/_UCD_accessors.c \
     57 	coredump/_UCD_create.c \
     58 	coredump/_UCD_destroy.c \
     59 	coredump/_UCD_access_mem.c \
     60 	coredump/_UCD_elf_map_image.c \
     61 	coredump/_UCD_find_proc_info.c \
     62 	coredump/_UCD_get_proc_name.c \
     63 	\
     64 	coredump/_UPT_elf.c \
     65 	coredump/_UPT_access_fpreg.c \
     66 	coredump/_UPT_get_dyn_info_list_addr.c \
     67 	coredump/_UPT_put_unwind_info.c \
     68 	coredump/_UPT_resume.c
     69 libunwind_coredump_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \
     70 				-version-info $(COREDUMP_SO_VERSION)
     71 noinst_HEADERS += coredump/_UCD_internal.h
     72 
     73 ### libunwind-setjmp:
     74 libunwind_setjmp_la_LDFLAGS		= $(COMMON_SO_LDFLAGS)		     \
     75 					  -version-info $(SETJMP_SO_VERSION)
     76 
     77 if USE_ELF32
     78 LIBUNWIND_ELF = libunwind-elf32.la
     79 endif
     80 if USE_ELF64
     81 LIBUNWIND_ELF = libunwind-elf64.la
     82 endif
     83 if USE_ELFXX
     84 LIBUNWIND_ELF = libunwind-elfxx.la
     85 endif
     86 
     87 libunwind_setjmp_la_LIBADD		= $(LIBUNWIND_ELF)	\
     88 					  libunwind-$(arch).la	\
     89 					  libunwind.la -lc
     90 libunwind_setjmp_la_SOURCES		= setjmp/longjmp.c	\
     91 					  setjmp/siglongjmp.c
     92 noinst_HEADERS				+= setjmp/setjmp_i.h
     93 
     94 ### libunwind:
     95 libunwind_la_LIBADD =
     96 
     97 # List of arch-independent files needed by both local-only and generic
     98 # libraries:
     99 libunwind_la_SOURCES_common =					\
    100 	$(libunwind_la_SOURCES_os)				\
    101 	mi/init.c mi/flush_cache.c mi/mempool.c mi/strerror.c
    102 
    103 # List of arch-independent files needed by generic library (libunwind-$ARCH):
    104 libunwind_la_SOURCES_generic =						\
    105 	mi/Gdyn-extract.c mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c	\
    106 	mi/Gget_accessors.c						\
    107 	mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c			\
    108 	mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c		\
    109 	mi/Gget_reg.c mi/Gset_reg.c					\
    110 	mi/Gget_fpreg.c mi/Gset_fpreg.c					\
    111 	mi/Gset_caching_policy.c
    112 
    113 if SUPPORT_CXX_EXCEPTIONS
    114 libunwind_la_SOURCES_local_unwind =					\
    115 	unwind/Backtrace.c unwind/DeleteException.c			\
    116 	unwind/FindEnclosingFunction.c unwind/ForcedUnwind.c		\
    117 	unwind/GetBSP.c unwind/GetCFA.c unwind/GetDataRelBase.c		\
    118 	unwind/GetGR.c unwind/GetIP.c unwind/GetLanguageSpecificData.c	\
    119 	unwind/GetRegionStart.c unwind/GetTextRelBase.c			\
    120 	unwind/RaiseException.c unwind/Resume.c				\
    121 	unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c	\
    122 	unwind/GetIPInfo.c
    123 
    124 #  _ReadULEB()/_ReadSLEB() are needed for Intel C++ 8.0 compatibility
    125 libunwind_la_SOURCES_os_linux_local = mi/_ReadULEB.c mi/_ReadSLEB.c
    126 endif
    127 
    128 # List of arch-independent files needed by local-only library (libunwind):
    129 libunwind_la_SOURCES_local_nounwind =					\
    130 	$(libunwind_la_SOURCES_os_local)				\
    131 	mi/backtrace.c							\
    132 	mi/dyn-cancel.c mi/dyn-info-list.c mi/dyn-register.c		\
    133 	mi/Ldyn-extract.c mi/Lfind_dynamic_proc_info.c			\
    134 	mi/Lget_accessors.c						\
    135 	mi/Lget_proc_info_by_ip.c mi/Lget_proc_name.c			\
    136 	mi/Lput_dynamic_unwind_info.c mi/Ldestroy_addr_space.c		\
    137 	mi/Lget_reg.c   mi/Lset_reg.c					\
    138 	mi/Lget_fpreg.c mi/Lset_fpreg.c					\
    139 	mi/Lset_caching_policy.c
    140 
    141 libunwind_la_SOURCES_local =						\
    142 	$(libunwind_la_SOURCES_local_nounwind)				\
    143 	$(libunwind_la_SOURCES_local_unwind)
    144 
    145 noinst_HEADERS += os-linux.h
    146 libunwind_la_SOURCES_os_linux = os-linux.c
    147 
    148 libunwind_la_SOURCES_os_hpux = os-hpux.c
    149 
    150 libunwind_la_SOURCES_os_freebsd = os-freebsd.c
    151 
    152 libunwind_la_SOURCES_os_qnx = os-qnx.c
    153 
    154 libunwind_dwarf_common_la_SOURCES = dwarf/global.c
    155 
    156 libunwind_dwarf_local_la_SOURCES = \
    157 	dwarf/Lexpr.c dwarf/Lfde.c dwarf/Lparser.c dwarf/Lpe.c dwarf/Lstep.c \
    158 	dwarf/Lfind_proc_info-lsb.c \
    159 	dwarf/Lfind_unwind_table.c
    160 libunwind_dwarf_local_la_LIBADD = libunwind-dwarf-common.la
    161 
    162 libunwind_dwarf_generic_la_SOURCES = \
    163 	dwarf/Gexpr.c dwarf/Gfde.c dwarf/Gparser.c dwarf/Gpe.c dwarf/Gstep.c \
    164 	dwarf/Gfind_proc_info-lsb.c \
    165 	dwarf/Gfind_unwind_table.c
    166 libunwind_dwarf_generic_la_LIBADD = libunwind-dwarf-common.la
    167 
    168 if USE_DWARF
    169  noinst_LTLIBRARIES += libunwind-dwarf-common.la libunwind-dwarf-generic.la
    170 if !REMOTE_ONLY
    171  noinst_LTLIBRARIES += libunwind-dwarf-local.la
    172 endif
    173  libunwind_la_LIBADD += libunwind-dwarf-local.la
    174 endif
    175 
    176 noinst_HEADERS += elf32.h elf64.h elfxx.h
    177 
    178 libunwind_elf32_la_SOURCES = elf32.c
    179 libunwind_elf64_la_SOURCES = elf64.c
    180 libunwind_elfxx_la_SOURCES = elfxx.c
    181 
    182 noinst_LTLIBRARIES += $(LIBUNWIND_ELF)
    183 libunwind_la_LIBADD += $(LIBUNWIND_ELF)
    184 
    185 # The list of files that go into libunwind and libunwind-aarch64:
    186 noinst_HEADERS += aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h
    187 libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common)	    \
    188 	aarch64/is_fpreg.c aarch64/regname.c
    189 
    190 # The list of files that go into libunwind:
    191 libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common)	    \
    192 	$(libunwind_la_SOURCES_local)					    \
    193 	aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c 		    \
    194 	aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c	    \
    195 	aarch64/Linit_local.c aarch64/Linit_remote.c 			    \
    196 	aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c 	    \
    197 	aarch64/Lstep.c
    198 
    199 libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \
    200 	$(libunwind_la_SOURCES_generic)					      \
    201 	aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c 		      \
    202 	aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c 	      \
    203 	aarch64/Ginit_local.c aarch64/Ginit_remote.c			      \
    204 	aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c	      \
    205 	aarch64/Gstep.c
    206 
    207 # The list of files that go into libunwind and libunwind-arm:
    208 noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h
    209 libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common)	    \
    210 	arm/is_fpreg.c arm/regname.c
    211 
    212 # The list of files that go into libunwind:
    213 libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common)		    \
    214 	$(libunwind_la_SOURCES_local)					    \
    215 	arm/getcontext.S						    \
    216 	arm/Lcreate_addr_space.c arm/Lget_proc_info.c arm/Lget_save_loc.c   \
    217 	arm/Lglobal.c arm/Linit.c arm/Linit_local.c arm/Linit_remote.c	    \
    218 	arm/Lis_signal_frame.c arm/Lregs.c arm/Lresume.c arm/Lstep.c	    \
    219 	arm/Lex_tables.c
    220 
    221 libunwind_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common)	    \
    222 	$(libunwind_la_SOURCES_generic)					    \
    223 	arm/Gcreate_addr_space.c arm/Gget_proc_info.c arm/Gget_save_loc.c   \
    224 	arm/Gglobal.c arm/Ginit.c arm/Ginit_local.c arm/Ginit_remote.c	    \
    225 	arm/Gis_signal_frame.c arm/Gregs.c arm/Gresume.c arm/Gstep.c	    \
    226 	arm/Gex_tables.c
    227 
    228 # The list of files that go both into libunwind and libunwind-ia64:
    229 noinst_HEADERS += ia64/init.h ia64/offsets.h ia64/regs.h		    \
    230 	ia64/ucontext_i.h ia64/unwind_decoder.h ia64/unwind_i.h
    231 libunwind_la_SOURCES_ia64_common = $(libunwind_la_SOURCES_common)	    \
    232 	ia64/regname.c
    233 
    234 # The list of files that go into libunwind:
    235 libunwind_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common)		     \
    236 	$(libunwind_la_SOURCES_local)					     \
    237 									     \
    238 	ia64/dyn_info_list.S ia64/getcontext.S				     \
    239 									     \
    240 	ia64/Lcreate_addr_space.c ia64/Lget_proc_info.c ia64/Lget_save_loc.c \
    241 	ia64/Lglobal.c ia64/Linit.c ia64/Linit_local.c ia64/Linit_remote.c   \
    242 	ia64/Linstall_cursor.S ia64/Lis_signal_frame.c ia64/Lparser.c	     \
    243 	ia64/Lrbs.c ia64/Lregs.c ia64/Lresume.c ia64/Lscript.c ia64/Lstep.c  \
    244 	ia64/Ltables.c ia64/Lfind_unwind_table.c
    245 
    246 # The list of files that go into libunwind-ia64:
    247 libunwind_ia64_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common)	     \
    248 	$(libunwind_la_SOURCES_generic)					     \
    249 	ia64/Gcreate_addr_space.c ia64/Gget_proc_info.c ia64/Gget_save_loc.c \
    250 	ia64/Gglobal.c ia64/Ginit.c ia64/Ginit_local.c ia64/Ginit_remote.c   \
    251 	ia64/Ginstall_cursor.S ia64/Gis_signal_frame.c ia64/Gparser.c	     \
    252 	ia64/Grbs.c ia64/Gregs.c ia64/Gresume.c ia64/Gscript.c ia64/Gstep.c  \
    253 	ia64/Gtables.c ia64/Gfind_unwind_table.c
    254 
    255 # The list of files that go both into libunwind and libunwind-hppa:
    256 noinst_HEADERS += hppa/init.h hppa/offsets.h hppa/unwind_i.h
    257 libunwind_la_SOURCES_hppa_common = $(libunwind_la_SOURCES_common)	\
    258 	hppa/regname.c
    259 
    260 # The list of files that go into libunwind:
    261 libunwind_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common)		\
    262 	$(libunwind_la_SOURCES_local)					\
    263 	hppa/getcontext.S hppa/setcontext.S				\
    264 	hppa/Lcreate_addr_space.c hppa/Lget_save_loc.c hppa/Lglobal.c	\
    265 	hppa/Linit.c hppa/Linit_local.c hppa/Linit_remote.c		\
    266 	hppa/Lis_signal_frame.c hppa/Lget_proc_info.c hppa/Lregs.c	\
    267 	hppa/Lresume.c hppa/Lstep.c
    268 
    269 # The list of files that go into libunwind-hppa:
    270 libunwind_hppa_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common)	\
    271 	$(libunwind_la_SOURCES_generic)					\
    272 	hppa/Gcreate_addr_space.c hppa/Gget_save_loc.c hppa/Gglobal.c	\
    273 	hppa/Ginit.c hppa/Ginit_local.c hppa/Ginit_remote.c		\
    274 	hppa/Gis_signal_frame.c hppa/Gget_proc_info.c hppa/Gregs.c	\
    275 	hppa/Gresume.c hppa/Gstep.c
    276 
    277 # The list of files that go info libunwind and libunwind-mips:
    278 noinst_HEADERS += mips/init.h mips/offsets.h
    279 libunwind_la_SOURCES_mips_common = $(libunwind_la_SOURCES_common)	    \
    280 	mips/is_fpreg.c mips/regname.c
    281 
    282 # The list of files that go into libunwind:
    283 libunwind_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common)		    \
    284 	$(libunwind_la_SOURCES_local)					    \
    285 	mips/getcontext.S						    \
    286 	mips/Lcreate_addr_space.c mips/Lget_proc_info.c mips/Lget_save_loc.c   \
    287 	mips/Lglobal.c mips/Linit.c mips/Linit_local.c mips/Linit_remote.c  \
    288 	mips/Lis_signal_frame.c mips/Lregs.c mips/Lresume.c mips/Lstep.c
    289 
    290 libunwind_mips_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common)	    \
    291 	$(libunwind_la_SOURCES_generic)					    \
    292 	mips/Gcreate_addr_space.c mips/Gget_proc_info.c mips/Gget_save_loc.c   \
    293 	mips/Gglobal.c mips/Ginit.c mips/Ginit_local.c mips/Ginit_remote.c	    \
    294 	mips/Gis_signal_frame.c mips/Gregs.c mips/Gresume.c mips/Gstep.c
    295 
    296 # The list of files that go both into libunwind and libunwind-x86:
    297 noinst_HEADERS += x86/init.h x86/offsets.h x86/unwind_i.h
    298 libunwind_la_SOURCES_x86_common = $(libunwind_la_SOURCES_common)	\
    299 	x86/is_fpreg.c x86/regname.c
    300 
    301 # The list of files that go into libunwind:
    302 libunwind_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common)		\
    303         $(libunwind_la_SOURCES_x86_os_local)				\
    304 	$(libunwind_la_SOURCES_local)					\
    305 	x86/Lcreate_addr_space.c x86/Lget_save_loc.c x86/Lglobal.c	\
    306 	x86/Linit.c x86/Linit_local.c x86/Linit_remote.c		\
    307 	x86/Lget_proc_info.c x86/Lregs.c				\
    308 	x86/Lresume.c x86/Lstep.c
    309 
    310 # The list of files that go into libunwind-x86:
    311 libunwind_x86_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common)	\
    312         $(libunwind_la_SOURCES_x86_os)					\
    313 	$(libunwind_la_SOURCES_generic)					\
    314 	x86/Gcreate_addr_space.c x86/Gget_save_loc.c x86/Gglobal.c	\
    315 	x86/Ginit.c x86/Ginit_local.c x86/Ginit_remote.c		\
    316 	x86/Gget_proc_info.c x86/Gregs.c				\
    317 	x86/Gresume.c x86/Gstep.c
    318 
    319 # The list of files that go both into libunwind and libunwind-x86_64:
    320 noinst_HEADERS += x86_64/offsets.h					\
    321 	x86_64/init.h x86_64/unwind_i.h x86_64/ucontext_i.h
    322 libunwind_la_SOURCES_x86_64_common = $(libunwind_la_SOURCES_common)	\
    323 	x86_64/is_fpreg.c x86_64/regname.c
    324 
    325 # The list of files that go into libunwind:
    326 libunwind_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common)	    \
    327         $(libunwind_la_SOURCES_x86_64_os_local)			    	    \
    328 	$(libunwind_la_SOURCES_local)					    \
    329 	x86_64/setcontext.S						    \
    330 	x86_64/Lcreate_addr_space.c x86_64/Lget_save_loc.c x86_64/Lglobal.c \
    331 	x86_64/Linit.c x86_64/Linit_local.c x86_64/Linit_remote.c	    \
    332 	x86_64/Lget_proc_info.c x86_64/Lregs.c x86_64/Lresume.c		    \
    333 	x86_64/Lstash_frame.c x86_64/Lstep.c x86_64/Ltrace.c x86_64/getcontext.S
    334 
    335 # The list of files that go into libunwind-x86_64:
    336 libunwind_x86_64_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common)  \
    337         $(libunwind_la_SOURCES_x86_64_os)			    	    \
    338 	$(libunwind_la_SOURCES_generic)					    \
    339 	x86_64/Gcreate_addr_space.c x86_64/Gget_save_loc.c x86_64/Gglobal.c \
    340 	x86_64/Ginit.c x86_64/Ginit_local.c x86_64/Ginit_remote.c	    \
    341 	x86_64/Gget_proc_info.c x86_64/Gregs.c x86_64/Gresume.c		    \
    342 	x86_64/Gstash_frame.c x86_64/Gstep.c x86_64/Gtrace.c
    343 
    344 # The list of local files that go to Power 64 and 32:
    345 libunwind_la_SOURCES_ppc = ppc/Lcreate_addr_space.c 			\
    346 	ppc/Lget_proc_info.c ppc/Lget_save_loc.c ppc/Linit_local.c	\
    347 	ppc/Linit_remote.c ppc/Lis_signal_frame.c
    348 
    349 # The list of generic files that go to Power 64 and 32:
    350 libunwind_ppc_la_SOURCES_ppc_generic = ppc/Gcreate_addr_space.c		\
    351 	ppc/Gget_proc_info.c ppc/Gget_save_loc.c ppc/Ginit_local.c	\
    352 	ppc/Ginit_remote.c ppc/Gis_signal_frame.c
    353 
    354 # The list of files that go both into libunwind and libunwind-ppc32:
    355 noinst_HEADERS += ppc32/init.h ppc32/unwind_i.h ppc32/ucontext_i.h
    356 libunwind_la_SOURCES_ppc32_common = $(libunwind_la_SOURCES_common)      \
    357 	ppc32/is_fpreg.c ppc32/regname.c ppc32/get_func_addr.c
    358 
    359 # The list of files that go into libunwind:
    360 libunwind_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common)       \
    361 	$(libunwind_la_SOURCES_local)                                   \
    362 	$(libunwind_la_SOURCES_ppc)					\
    363 	ppc32/Lglobal.c ppc32/Linit.c					\
    364 	ppc32/Lregs.c ppc32/Lresume.c ppc32/Lstep.c
    365 
    366 # The list of files that go into libunwind-ppc32:
    367 libunwind_ppc32_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \
    368 	$(libunwind_la_SOURCES_generic)                                 \
    369 	$(libunwind_ppc_la_SOURCES_ppc_generic)				\
    370 	ppc32/Gglobal.c ppc32/Ginit.c					\
    371 	ppc32/Gregs.c ppc32/Gresume.c ppc32/Gstep.c
    372 
    373 # The list of files that go both into libunwind and libunwind-ppc64:
    374 noinst_HEADERS += ppc64/init.h ppc64/unwind_i.h ppc64/ucontext_i.h
    375 libunwind_la_SOURCES_ppc64_common = $(libunwind_la_SOURCES_common)      \
    376         ppc64/is_fpreg.c ppc64/regname.c ppc64/get_func_addr.c
    377 
    378 # The list of files that go into libunwind:
    379 libunwind_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common)       \
    380         $(libunwind_la_SOURCES_local)                                   \
    381 	$(libunwind_la_SOURCES_ppc)					\
    382 	ppc64/Lglobal.c ppc64/Linit.c					\
    383 	ppc64/Lregs.c ppc64/Lresume.c ppc64/Lstep.c
    384 
    385 # The list of files that go into libunwind-ppc64:
    386 libunwind_ppc64_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \
    387         $(libunwind_la_SOURCES_generic)                                 \
    388 	$(libunwind_ppc_la_SOURCES_ppc_generic)				\
    389 	ppc64/Gglobal.c ppc64/Ginit.c					\
    390 	ppc64/Gregs.c ppc64/Gresume.c ppc64/Gstep.c
    391 
    392 # The list of files that go into libunwind and libunwind-sh:
    393 noinst_HEADERS += sh/init.h sh/offsets.h sh/unwind_i.h
    394 libunwind_la_SOURCES_sh_common = $(libunwind_la_SOURCES_common)		\
    395 	sh/is_fpreg.c sh/regname.c
    396 
    397 # The list of files that go into libunwind:
    398 libunwind_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common)		\
    399 	$(libunwind_la_SOURCES_local)					\
    400 	sh/Lcreate_addr_space.c sh/Lget_proc_info.c sh/Lget_save_loc.c	\
    401 	sh/Lglobal.c sh/Linit.c sh/Linit_local.c sh/Linit_remote.c	\
    402 	sh/Lis_signal_frame.c sh/Lregs.c sh/Lresume.c sh/Lstep.c
    403 
    404 libunwind_sh_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common)		\
    405 	$(libunwind_la_SOURCES_generic)					\
    406 	sh/Gcreate_addr_space.c sh/Gget_proc_info.c sh/Gget_save_loc.c	\
    407 	sh/Gglobal.c sh/Ginit.c sh/Ginit_local.c sh/Ginit_remote.c	\
    408 	sh/Gis_signal_frame.c sh/Gregs.c sh/Gresume.c sh/Gstep.c
    409 
    410 if REMOTE_ONLY
    411 install-exec-hook:
    412 #	Nothing to do here....
    413 else
    414 #
    415 # This is not ideal, but I know of no other way to install an
    416 # alias for a library.  For the shared version, we have to do
    417 # a file check before creating the link, because it isn't going
    418 # to be there if the user configured with --disable-shared.
    419 #
    420 install-exec-hook:
    421 	cd $(DESTDIR)$(libdir) && $(LN_S) -f libunwind-$(arch).a libunwind-generic.a
    422 	if test -f $(DESTDIR)$(libdir)/libunwind-$(arch).so; then \
    423 		cd $(DESTDIR)$(libdir) && $(LN_S) -f libunwind-$(arch).so \
    424 		libunwind-generic.so; \
    425 	fi
    426 endif
    427 
    428 if OS_LINUX
    429  libunwind_la_SOURCES_os	      = $(libunwind_la_SOURCES_os_linux)
    430  libunwind_la_SOURCES_os_local	      = $(libunwind_la_SOURCES_os_linux_local)
    431  libunwind_la_SOURCES_x86_os          = x86/Gos-linux.c
    432  libunwind_x86_la_SOURCES_os	      = x86/getcontext-linux.S
    433  libunwind_la_SOURCES_x86_os_local    = x86/Los-linux.c
    434  libunwind_la_SOURCES_x86_64_os       = x86_64/Gos-linux.c
    435  libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-linux.c
    436  libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_linux.c
    437 endif
    438 
    439 if OS_HPUX
    440  libunwind_la_SOURCES_os	= $(libunwind_la_SOURCES_os_hpux)
    441  libunwind_la_SOURCES_os_local	= $(libunwind_la_SOURCES_os_hpux_local)
    442 endif
    443 
    444 if OS_FREEBSD
    445  libunwind_la_SOURCES_os	= $(libunwind_la_SOURCES_os_freebsd)
    446  libunwind_la_SOURCES_os_local	= $(libunwind_la_SOURCES_os_freebsd_local)
    447  libunwind_la_SOURCES_x86_os          = x86/Gos-freebsd.c
    448  libunwind_x86_la_SOURCES_os	      = x86/getcontext-freebsd.S
    449  libunwind_la_SOURCES_x86_os_local    = x86/Los-freebsd.c
    450  libunwind_la_SOURCES_x86_64_os       = x86_64/Gos-freebsd.c
    451  libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-freebsd.c
    452  libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c
    453 endif
    454 
    455 if OS_QNX
    456  libunwind_la_SOURCES_os	= $(libunwind_la_SOURCES_os_qnx)
    457  libunwind_la_SOURCES_os_local	= $(libunwind_la_SOURCES_os_qnx_local)
    458 endif
    459 
    460 if ARCH_AARCH64
    461  lib_LTLIBRARIES += libunwind-aarch64.la
    462  libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64)
    463  libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64)
    464  libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    465  libunwind_aarch64_la_LIBADD = libunwind-dwarf-generic.la
    466  libunwind_aarch64_la_LIBADD += libunwind-elf64.la
    467 if !REMOTE_ONLY
    468  libunwind_aarch64_la_LIBADD += libunwind.la -lc
    469 endif
    470  libunwind_setjmp_la_SOURCES += aarch64/siglongjmp.S
    471 else
    472 if ARCH_ARM
    473  lib_LTLIBRARIES += libunwind-arm.la
    474  libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm)
    475  libunwind_arm_la_SOURCES = $(libunwind_arm_la_SOURCES_arm)
    476  libunwind_arm_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    477  libunwind_arm_la_LIBADD = libunwind-dwarf-generic.la
    478  libunwind_arm_la_LIBADD += libunwind-elf32.la
    479 if !REMOTE_ONLY
    480  libunwind_arm_la_LIBADD += libunwind.la -lc
    481 endif
    482  libunwind_setjmp_la_SOURCES += arm/siglongjmp.S
    483 else
    484 if ARCH_IA64
    485  BUILT_SOURCES = Gcursor_i.h Lcursor_i.h
    486 mk_Gcursor_i.s: $(srcdir)/ia64/mk_Gcursor_i.c
    487 	$(COMPILE) -S "$(srcdir)/ia64/mk_Gcursor_i.c" -o mk_Gcursor_i.s
    488 mk_Lcursor_i.s: $(srcdir)/ia64/mk_Lcursor_i.c
    489 	$(COMPILE) -S "$(srcdir)/ia64/mk_Lcursor_i.c" -o mk_Lcursor_i.s
    490 Gcursor_i.h: mk_Gcursor_i.s
    491 	"$(srcdir)/ia64/mk_cursor_i" mk_Gcursor_i.s > Gcursor_i.h
    492 Lcursor_i.h: mk_Lcursor_i.s
    493 	"$(srcdir)/ia64/mk_cursor_i" mk_Lcursor_i.s > Lcursor_i.h
    494 
    495  lib_LTLIBRARIES += libunwind-ia64.la
    496  libunwind_la_SOURCES = $(libunwind_la_SOURCES_ia64)
    497  libunwind_ia64_la_SOURCES = $(libunwind_ia64_la_SOURCES_ia64)
    498  libunwind_ia64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    499  libunwind_ia64_la_LIBADD = libunwind-elf64.la
    500 if !REMOTE_ONLY
    501  libunwind_ia64_la_LIBADD += libunwind.la -lc
    502 endif
    503  libunwind_setjmp_la_SOURCES += ia64/setjmp.S  ia64/sigsetjmp.S  \
    504 				ia64/longjmp.S ia64/siglongjmp.S
    505 else
    506 if ARCH_HPPA
    507  lib_LTLIBRARIES += libunwind-hppa.la
    508  libunwind_la_SOURCES = $(libunwind_la_SOURCES_hppa)
    509  libunwind_hppa_la_SOURCES = $(libunwind_hppa_la_SOURCES_hppa)
    510  libunwind_hppa_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    511  libunwind_hppa_la_LIBADD = libunwind-dwarf-generic.la
    512  libunwind_hppa_la_LIBADD += libunwind-elf32.la
    513 if !REMOTE_ONLY
    514  libunwind_hppa_la_LIBADD += libunwind.la -lc
    515 endif
    516  libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S
    517 else
    518 if ARCH_MIPS
    519  lib_LTLIBRARIES += libunwind-mips.la
    520  libunwind_la_SOURCES = $(libunwind_la_SOURCES_mips)
    521  libunwind_mips_la_SOURCES = $(libunwind_mips_la_SOURCES_mips)
    522  libunwind_mips_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    523  libunwind_mips_la_LIBADD = libunwind-dwarf-generic.la
    524  libunwind_mips_la_LIBADD += libunwind-elfxx.la
    525 if !REMOTE_ONLY
    526  libunwind_mips_la_LIBADD += libunwind.la -lc
    527 endif
    528  libunwind_setjmp_la_SOURCES += mips/siglongjmp.S
    529 else
    530 if ARCH_X86
    531  lib_LTLIBRARIES += libunwind-x86.la
    532  libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86) $(libunwind_x86_la_SOURCES_os)
    533  libunwind_x86_la_SOURCES = $(libunwind_x86_la_SOURCES_x86)
    534  libunwind_x86_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    535  libunwind_x86_la_LIBADD = libunwind-dwarf-generic.la
    536  libunwind_x86_la_LIBADD += libunwind-elf32.la
    537 if !REMOTE_ONLY
    538  libunwind_x86_la_LIBADD += libunwind.la -lc
    539 endif
    540  libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S
    541 else
    542 if ARCH_X86_64
    543  lib_LTLIBRARIES += libunwind-x86_64.la
    544  libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86_64)
    545  libunwind_x86_64_la_SOURCES = $(libunwind_x86_64_la_SOURCES_x86_64)
    546  libunwind_x86_64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    547  libunwind_x86_64_la_LIBADD = libunwind-dwarf-generic.la
    548  libunwind_x86_64_la_LIBADD += libunwind-elf64.la
    549 if !REMOTE_ONLY
    550  libunwind_x86_64_la_LIBADD += libunwind.la -lc
    551 endif
    552  libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S
    553 else
    554 if ARCH_PPC32
    555  lib_LTLIBRARIES += libunwind-ppc32.la
    556  libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc32)
    557  libunwind_ppc32_la_SOURCES = $(libunwind_ppc32_la_SOURCES_ppc32)
    558  libunwind_ppc32_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    559  libunwind_ppc32_la_LIBADD = libunwind-dwarf-generic.la
    560  libunwind_ppc32_la_LIBADD += libunwind-elf32.la
    561 if !REMOTE_ONLY
    562  libunwind_ppc32_la_LIBADD += libunwind.la -lc
    563 endif
    564  libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
    565 else
    566 if ARCH_PPC64
    567  lib_LTLIBRARIES += libunwind-ppc64.la
    568  libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc64)
    569  libunwind_ppc64_la_SOURCES = $(libunwind_ppc64_la_SOURCES_ppc64)
    570  libunwind_ppc64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    571  libunwind_ppc64_la_LIBADD = libunwind-dwarf-generic.la
    572  libunwind_ppc64_la_LIBADD += libunwind-elf64.la
    573 if !REMOTE_ONLY
    574  libunwind_ppc64_la_LIBADD += libunwind.la -lc
    575 endif
    576  libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
    577 else
    578 if ARCH_SH
    579  lib_LTLIBRARIES += libunwind-sh.la
    580  libunwind_la_SOURCES = $(libunwind_la_SOURCES_sh)
    581  libunwind_sh_la_SOURCES = $(libunwind_sh_la_SOURCES_sh)
    582  libunwind_sh_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION)
    583  libunwind_sh_la_LIBADD = libunwind-dwarf-generic.la
    584  libunwind_sh_la_LIBADD += libunwind-elf32.la
    585 if !REMOTE_ONLY
    586  libunwind_sh_la_LIBADD += libunwind.la -lc
    587 endif
    588  libunwind_setjmp_la_SOURCES += sh/siglongjmp.S
    589 
    590 endif # ARCH_SH
    591 endif # ARCH_PPC64
    592 endif # ARCH_PPC32
    593 endif # ARCH_X86_64
    594 endif # ARCH_X86
    595 endif # ARCH_MIPS
    596 endif # ARCH_HPPA
    597 endif # ARCH_IA64
    598 endif # ARCH_ARM
    599 endif # ARCH_AARCH64
    600 
    601 # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
    602 # at the end.
    603 if BUILD_SETJMP
    604 lib_LTLIBRARIES += libunwind-setjmp.la
    605 endif
    606 
    607 #
    608 # Don't link with standard libraries, because those may mention
    609 # libunwind already.
    610 #
    611 libunwind_la_LDFLAGS =	$(COMMON_SO_LDFLAGS) -XCClinker -nostdlib \
    612 			$(LDFLAGS_STATIC_LIBCXA) -version-info $(SOVERSION)
    613 libunwind_la_LIBADD  += -lc $(LIBCRTS)
    614 libunwind_la_LIBADD += $(LIBLZMA)
    615 
    616 AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I.
    617 AM_CCASFLAGS = $(AM_CPPFLAGS)
    618 noinst_HEADERS += unwind/unwind-internal.h
    619 
    620 EXTRA_DIST =	$(libunwind_la_SOURCES_aarch64)			\
    621 		$(libunwind_la_SOURCES_arm)			\
    622 		$(libunwind_la_SOURCES_hppa)			\
    623 		$(libunwind_la_SOURCES_ia64)			\
    624 		$(libunwind_la_SOURCES_mips)			\
    625 		$(libunwind_la_SOURCES_sh)			\
    626 		$(libunwind_la_SOURCES_x86)			\
    627 		$(libunwind_la_SOURCES_os_freebsd)		\
    628 		$(libunwind_la_SOURCES_os_linux)		\
    629 		$(libunwind_la_SOURCES_os_hpux)			\
    630 		$(libunwind_la_SOURCES_os_qnx)			\
    631 		$(libunwind_la_SOURCES_common)			\
    632 		$(libunwind_la_SOURCES_local)			\
    633 		$(libunwind_la_SOURCES_generic)			\
    634 		$(libunwind_aarch64_la_SOURCES_aarch64)		\
    635 		$(libunwind_arm_la_SOURCES_arm)			\
    636 		$(libunwind_hppa_la_SOURCES_hppa)		\
    637 		$(libunwind_ia64_la_SOURCES_ia64)		\
    638 		$(libunwind_mips_la_SOURCES_mips)		\
    639 		$(libunwind_sh_la_SOURCES_sh)			\
    640 		$(libunwind_x86_la_SOURCES_x86)			\
    641 		$(libunwind_x86_64_la_SOURCES_x86_64)
    642 
    643 MAINTAINERCLEANFILES = Makefile.in
    644 
    645 # The -version-info flag accepts an argument of the form
    646 # `current[:revision[:age]]'. So, passing `-version-info 3:12:1' sets
    647 # current to 3, revision to 12, and age to 1.
    648 
    649 # If either revision or age are omitted, they default to 0. Also note
    650 # that age must be less than or equal to the current interface number.
    651 
    652 # Here are a set of rules to help you update your library version
    653 # information:
    654 
    655 #    1. Start with version information of `0:0:0' for each libtool
    656 #       library.
    657 
    658 #    2. Update the version information only immediately before a public
    659 #       release of your software. More frequent updates are unnecessary,
    660 #       and only guarantee that the current interface number gets larger
    661 #       faster.
    662 
    663 #    3. If the library source code has changed at all since the last
    664 #       update, then increment revision (`c:r:a' becomes `c:r+1:a').
    665 
    666 #    4. If any interfaces have been added, removed, or changed since the
    667 #       last update, increment current, and set revision to 0.
    668 
    669 #    5. If any interfaces have been added since the last public release,
    670 #       then increment age.
    671 
    672 #    6. If any interfaces have been removed since the last public
    673 #       release, then set age to 0.
    674