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