2 # Paradyn overall build configuration (unix)
4 # $Id: make.config,v 1.242 2008/09/20 03:56:08 jaw Exp $
10 # ***** EXTERNAL SOFTWARE CONFIGURATION *****
12 # Include any per-user configuration changes; this "local" config file
13 # should *not* be under CVS control, so that it never gets committed.
17 include $(TO_CORE)/make.config.local
19 Everything = dynutil common symtabAPI instructionAPI parseAPI proccontrol stackwalk dyninstAPI_RT dyninstAPI
20 SymtabAPI = dynutil common symtabAPI
21 StackwalkerAPI = dynutil common proccontrol stackwalk
22 DyninstAPI = dynutil common symtabAPI instructionAPI parseAPI stackwalk dyninstAPI_RT dyninstAPI
23 DynC_API = dynutil common symtabAPI instructionAPI parseAPI dyninstAPI_RT dyninstAPI dynC_API
24 InstructionAPI = dynutil common instructionAPI
25 ProcControlAPI = dynutil common proccontrol
26 DepGraphAPI = depGraphAPI
27 ParseAPI = dynutil common symtabAPI instructionAPI parseAPI
28 ValueAdded = valueAdded/sharedMem
29 DataflowAPI = ParseAPI
31 DEFAULT_COMPONENT ?= default
32 ifeq ($(DEFAULT_COMPONENT),default)
33 fullSystem += $(Everything)
34 BUILD_PARSETHAT = true
36 ifeq ($(DEFAULT_COMPONENT),SymtabAPI)
37 fullSystem += $(SymtabAPI)
39 ifeq ($(DEFAULT_COMPONENT),StackwalkerAPI)
40 fullSystem += $(StackwalkerAPI)
42 ifeq ($(DEFAULT_COMPONENT),DyninstAPI)
43 fullSystem += $(DyninstAPI)
44 BUILD_PARSETHAT = true
46 ifeq ($(DEFAULT_COMPONENT),InstructionAPI)
47 fullSystem += $(InstructionAPI)
49 ifeq ($(DEFAULT_COMPONENT),ProcControlAPI)
50 fullSystem += $(ProcControlAPI)
52 ifeq ($(DEFAULT_COMPONENT),ParseAPI)
53 fullSystem += $(ParseAPI)
55 ifeq ($(DEFAULT_COMPONENT),DataflowAPI)
56 fullSystem += $(ParseAPI)
59 @echo Error: Build system does not have a valid default component: $(DEFAULT_COMPONENT)
69 ifndef DONT_BUILD_NEWTESTSUITE
70 testsuites += testsuite
71 allSubdirs_noinstall += testsuite
72 fullSystem += testsuite
74 testsuites += parseThat
75 fullSystem += parseThat
81 #USE_DEPRECATED_BPATCH_VECTOR = 1
82 #IBM_BPATCH_COMPAT = 1
83 # Apart from actual "full" releases, don't modify these build Id components.
84 # For personal/experimental builds, feel free to use your
85 # dyninst/make.config.local file to (re-)define BUILD_MARK as you desire.
87 # most "main" modules are only two levels deep, but we need to be able to
88 # change this for those that are deeper in the tree
90 TO_SCRIPTS = $(TO_CORE)/scripts
93 # If the PLATFORM environment variable isn't set, we'll try to figure it out.
99 SNAME = $(shell if [ -f ${TO_SCRIPTS}/sysname ]; then echo ${TO_SCRIPTS}/sysname; else pwd; fi )
101 CURPLAT = $(shell ${SNAME})
105 # i386/Linux, x86-64/Linux, ppc/Linux, ppc64/Linux
106 ifneq (,$(findstring linux,$(CURPLAT)))
107 ifneq (,$(findstring i686,$(CURPLAT)))
108 PLATFORM = i386-unknown-linux2.4
110 ifneq (,$(findstring i586,$(CURPLAT)))
111 PLATFORM = i386-unknown-linux2.4
113 ifneq (,$(findstring i486,$(CURPLAT)))
114 PLATFORM = i386-unknown-linux2.4
116 ifneq (,$(findstring i386,$(CURPLAT)))
117 PLATFORM = i386-unknown-linux2.4
119 ifneq (,$(findstring x86_64,$(CURPLAT)))
120 PLATFORM = x86_64-unknown-linux2.4
122 ifneq (,$(findstring, ppc64,$(CURPLAT)))
123 PLATFORM = ppc64_linux
125 ifneq (,$(findstring, powerpc64,$(CURPLAT)))
126 PLATFORM = ppc64_linux
128 ifneq (,$(findstring, powerpc-,$(CURPLAT)))
129 PLATFORM = ppc32_linux
131 ifneq (,$(findstring, ppc-,$(CURPLAT)))
132 PLATFORM = ppc32_linux
137 ifneq (,$(findstring freebsd,$(CURPLAT)))
138 ifneq (,$(findstring i686,$(CURPLAT)))
139 PLATFORM = i386-unknown-freebsd7.2
141 ifneq (,$(findstring i586,$(CURPLAT)))
142 PLATFORM = i386-unknown-freebsd7.2
144 ifneq (,$(findstring i486,$(CURPLAT)))
145 PLATFORM = i386-unknown-freebsd7.2
147 ifneq (,$(findstring i386,$(CURPLAT)))
148 PLATFORM = i386-unknown-freebsd7.2
150 ifneq (,$(findstring x86_64,$(CURPLAT)))
151 PLATFORM = amd64-unknown-freebsd7.2
156 ifneq (,$(findstring vxworks,$(CURPLAT)))
157 ifneq (,$(findstring i686,$(CURPLAT)))
158 PLATFORM = i386-unknown-vxworks6.x
160 ifneq (,$(findstring i586,$(CURPLAT)))
161 PLATFORM = i386-unknown-vxworks6.x
163 ifneq (,$(findstring i486,$(CURPLAT)))
164 PLATFORM = i386-unknown-vxworks6.x
166 ifneq (,$(findstring i386,$(CURPLAT)))
167 PLATFORM = i386-unknown-vxworks6.x
169 ifneq (,$(findstring powerpc-,$(CURPLAT)))
170 PLATFORM = ppc32-unknown-vxworks6.x
183 $(error Could not determine you current platform. Please set your PLATFORM environment variable to whichever closest matches your platform: amd64-unknown-freebsd7.2 i386-unknown-freebsd7.2 i386-unknown-linux2.4 i386-unknown-vxworks6.x ppc32-unknown-vxworks6.x ppc32_bgl_ion ppc32_bgp ppc32_bgp_ion ppc32_linux ppc64_bgq_ion ppc64_linux x86_64-unknown-linux2.4)
186 # Choose default development directories if necessary variables are unset
188 LIBRARY_DEST ?= $(libdir)
189 PROGRAM_DEST ?= $(bindir)
190 INCLUDE_DEST ?= $(includedir)
193 ifeq (x$(LIBRARY_DEST),x)
194 LIBRARY_DEST = $(prefix)/lib
196 ifeq (x$(PROGRAM_DEST),x)
197 PROGRAM_DEST = $(prefix)/bin
199 ifeq (x$(INCLUDE_DEST),x)
200 LIBRARY_DEST = $(prefix)/include
204 # Destinations for library and executable installation (relative to "dyninst"!)
205 # These are here for backwards compatibility with old make.config.locals
206 LIBRARY_DEST ?= ${TO_CORE}/../${PLATFORM}/lib
207 PROGRAM_DEST ?= ${TO_CORE}/../${PLATFORM}/bin
208 INCLUDE_DEST ?= ${TO_CORE}/../include
210 # DESTDIR is a standard name to do a staged install
212 LIBRARY_DEST := ${DESTDIR}${LIBRARY_DEST}
213 PROGRAM_DEST := ${DESTDIR}${PROGRAM_DEST}
214 INCLUDE_DEST := ${DESTDIR}${INCLUDE_DEST}
217 # Usually, we look for files, binaries, libs in $(TO_CORE)/....<something>.
218 # But if the file doesn't exist there (i.e. if the user hasn't checked them out
219 # with cvs), then we should look in a backup location. That's what this vrble
220 # is about. It's used several times below in this file.
221 ifeq ($(PLATFORM),ppc32_bgl_compute)
227 ifeq ($(PLATFORM),ppc32_bgp_compute)
228 GCC = powerpc-bgp-linux-gcc
229 GXX = powerpc-bgp-linux-g++
230 CC = powerpc-bgp-linux-gcc
231 CXX = powerpc-bgp-linux-g++
251 PERL = perl # NB: perl v5 or higher required!
253 # COLLECTOR is only used by purify & quantify
254 COLLECTOR = /s/gcc-2.7.2/bin/../lib/gcc-lib/$(PLATFORM)/2.7.2/ld
255 # BUILDSTAMP is used to generate local build vouchers
256 BUILDSTAMP = $(TO_CORE)/scripts/buildstamp
259 BUILDERROR: PLATFORM must be defined in environment to build (and run) Paradyn
262 # Define all tags based on the platform string. When a new platform
263 # is added, add it to the list
266 # Brief description of -Ds:
269 # cap_save_the_world: support for creating a patched binary
270 # cap_relocation: function relocation
271 # cap_stripped_binaries: recursive parsing and function discovery without symbols
273 # cap_ptrace: uses ptrace interface
274 # cap_proc: uses /proc interface
275 # cap_proc_ioctl: uses ioctl interface to proc
276 # cap_proc_fd: uses solaris-style multiple-fd proc interface
277 # cap_threads: support for threaded applications
278 # cap_dynamic_heap: support for a dynamically growing inferior heap
279 # cap_threaded_times: (Linux only) times() returns per-thread information.
280 # cap_syscall_trap: The ability (or necessity) to place a trap instruction at the instruction following a system call.
281 # cap_slicing: (i386-unknown-linux2.4 and 2.6, sparc-sun-solaris2.8 and 2.9) Intraprocedural slicing feature
282 # cap_32_64: platforms that support 32- and 64-bit mutatees
283 # cap_liveness: liveness analysis
284 # cap_fixpoint_gen: Generate code using a fixpoint method that saves space
285 # cap_noaddr_gen: Allow code generation before determining the address code is going into
286 # cap_mutatee_traps: Traps can be handled mutatee side
287 # cap_instruction_api: System uses instruction API
288 # cap_registers: User can access registers in snippets
289 # cap_instruction_replacement: we use the replaceCode concept to implement (e.g.,) function call replacement
290 # cap_tramp_liveness: we can run liveness over our trampolines to determine what's used
291 # cap_toc: platform uses a TOC pointer that must be updated in inter-module control transfers
292 # cap_toc_32: "" for 32-bit mode
293 # cap_toc_64: "" for 64-bit mode
296 # bug_aix_broken_fork: AIX child process does not stop on fork if requested.
297 # bug_syscall_changepc_rewind: Linux rewinds the PC by <addr width> if
298 # the change occurs within a system call; reported by SGI.
299 # bug_freebsd_missing_sigstop: A stop followed by a continue and a new SIGSTOP
300 # results in the new SIGSTOP event never being returned from waitpid
301 # bug_freebsd_mt_suspend: threads do not suspend after an attach
302 # bug_freebsd_change_pc: when changing the PC for a thread, the OS may not
303 # schedule the thread if it is blocked in the kernel.
304 # bug_phdrs_first_page: the OS requires that the program headers for a ELF
305 # binary must reside in the first page of the binary on disk
306 # bug_registers_after_exit: Linux throws an oops and kills the culprit thread
307 # when it attempts to read registers via ptrace after a pre-Exit
308 # bug_force_terminate_failure: during a ForceTerminate on Linux, there exists
309 # an OS-level race condition where we will receive a Post-Exit event but the
310 # process remains stopped
312 ifeq ($(PLATFORM),i386-unknown-linux2.4)
313 OLD_DEF = -Di386_unknown_linux2_0
314 ARCH_DEF = -Darch_x86
316 CAP_DEF = -Dcap_ptrace -Dcap_relocation -Dcap_stripped_binaries -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_liveness -Dcap_fixpoint_gen -Dcap_noaddr_gen -Dcap_mutatee_traps -Dcap_instruction_api -Dcap_serialization -Dcap_binary_rewriter -Dcap_virtual_registers -Dcap_cache_func_starts -Dcap_instruction_replacement -Dcap_tramp_liveness
317 BUG_DEF = -Dbug_syscall_changepc_rewind
320 ifeq ($(PLATFORM),i386-unknown-linux2.6)
321 OLD_DEF = -Di386_unknown_linux2_0
322 ARCH_DEF = -Darch_x86
324 CAP_DEF = -Dcap_ptrace -Dcap_relocation -Dcap_stripped_binaries -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_liveness -Dcap_fixpoint_gen -Dcap_noaddr_gen -Dcap_mutatee_traps -Dcap_instruction_api -Dcap_serialization -Dcap_binary_rewriter -Dcap_virtual_registers -Dcap_instruction_replacement -Dcap_tramp_liveness
325 BUG_DEF = -Dbug_syscall_changepc_rewind
328 ifeq ($(PLATFORM),x86_64-unknown-linux2.4)
329 OLD_DEF = -Dx86_64_unknown_linux2_4
330 ARCH_DEF = -Darch_x86_64 -Darch_64bit
332 CAP_DEF = -Dcap_ptrace -Dcap_stripped_binaries -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_relocation -Dcap_dwarf -Dcap_32_64 -Dcap_liveness -Dcap_fixpoint_gen -Dcap_noaddr_gen -Dcap_mutatee_traps -Dcap_binary_rewriter -Dcap_registers -Dcap_instruction_api -Dcap_serialization -Dcap_instruction_replacement -Dcap_tramp_liveness
333 BUG_DEF = -Dbug_syscall_changepc_rewind
336 ifeq ($(PLATFORM),sparc-sun-solaris2.8)
337 OLD_DEF = -Dsparc_sun_solaris2_4
338 ARCH_DEF = -Darch_sparc
339 OS_DEF = -Dos_solaris
340 CAP_DEF = -Dcap_proc -Dcap_proc_fd -Dcap_async_events -Dcap_dynamic_heap -Dcap_threads -Dcap_relocation -Dcap_dwarf \
341 -Dcap_syscall_trap -Dcap_serialization
345 ifeq ($(PLATFORM),sparc-sun-solaris2.9)
346 OLD_DEF = -Dsparc_sun_solaris2_4
347 ARCH_DEF = -Darch_sparc
348 OS_DEF = -Dos_solaris
349 CAP_DEF = -Dcap_proc -Dcap_proc_fd -Dcap_async_events -Dcap_dynamic_heap -Dcap_threads -Dcap_relocation -Dcap_dwarf \
350 -Dcap_syscall_trap -Dcap_serialization
354 ifeq ($(PLATFORM),rs6000-ibm-aix5.1)
355 OLD_DEF = -Drs6000_ibm_aix5_1 -Drs6000_ibm_aix4_1
356 ARCH_DEF = -Darch_power
358 CAP_DEF = -Dcap_proc -Dcap_proc_fd -Dcap_async_events -Dcap_relocation -Dcap_threads -Dcap_dynamic_heap -Dcap_syscall_trap \
359 -Dcap_liveness -Dcap_use_pdvector -Dcap_serialization -Dcap_registers -Dcap_instruction_replacement -Dcap_instruction_api \
360 -Dcap_stackwalker_use_symtab
364 ifeq ($(PLATFORM),rs6000-ibm-aix64-5.2)
365 OLD_DEF = -Drs6000_ibm_aix5_1 -Drs6000_ibm_aix4_1
366 ARCH_DEF = -Darch_power -Darch_64bit
368 CAP_DEF = -Dcap_proc -Dcap_proc_fd -Dcap_async_events -Dcap_relocation -Dcap_threads -Dcap_dynamic_heap -Dcap_syscall_trap \
369 -Dcap_liveness -Dcap_use_pdvector -Dcap_serialization -Dcap_registers -Dcap_instruction_replacement \
370 -Dcap_instruction_api -Dcap_32_64
374 ifeq ($(PLATFORM),ppc64_linux)
375 OLD_DEF = -Dppc64_linux
376 ARCH_DEF = -Darch_power -Darch_64bit
378 CAP_DEF = -Dcap_ptrace -Dcap_relocation -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_liveness \
379 -Dcap_32_64 -Dcap_serialization -Dcap_registers -Dcap_instruction_replacement -Dcap_binary_rewriter -Dcap_instruction_api
380 BUG_DEF = -Dbug_syscall_changepc_rewind -Dbug_registers_after_exit -Dbug_force_terminate_failure
383 ifeq ($(PLATFORM),ppc32_linux)
384 OLD_DEF = -Dppc32_linux
385 ARCH_DEF = -Darch_power
387 CAP_DEF = -Dcap_ptrace -Dcap_relocation -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_liveness \
388 -Dcap_serialization -Dcap_registers -Dcap_instruction_replacement -Dcap_instruction_api \
389 -Dcap_binary_rewriter
390 BUG_DEF = -Dbug_syscall_changepc_rewind -Dbug_registers_after_exit -Dbug_force_terminate_failure
393 ifeq ($(PLATFORM),ppc32_bgp)
394 OLD_DEF = -Dppc32_linux
395 ARCH_DEF = -Darch_power
397 CAP_DEF = -Dcap_ptrace -Dcap_mutatee_traps -Dcap_relocation -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_liveness \
398 -Dcap_serialization -Dcap_registers -Dcap_instruction_replacement -Dcap_instruction_api \
399 -Dcap_binary_rewriter
400 BUG_DEF = -Dbug_syscall_changepc_rewind
404 ifeq ($(PLATFORM),ppc32_bgl_ion)
405 OLD_DEF = -Dppc32_bluegene
406 ARCH_DEF = -Darch_power
407 OS_DEF = -Dos_bg -Dos_bgl -Dos_bg_ion
408 CAP_DEF = -Dcap_dwarf
412 ifeq ($(PLATFORM),ppc32_bgl_compute)
413 OLD_DEF = -Dppc32_bluegene
414 ARCH_DEF = -Darch_powerO
415 OS_DEF = -Dos_bg -Dos_bgl -Dos_bg_compute
416 CAP_DEF = -Dcap_dwarf
420 ifeq ($(PLATFORM),ppc32_bgp_ion)
421 OLD_DEF = -Dppc32_bluegene
422 ARCH_DEF = -Darch_power
423 OS_DEF = -Dos_bg -Dos_bgp -Dos_bg_ion
424 CAP_DEF = -Dcap_dwarf
428 ifeq ($(PLATFORM),ppc64_bgq_ion)
429 OLD_DEF = -Dppc64_bluegene
430 ARCH_DEF = -Darch_power -Darch_64bit
431 OS_DEF = -Dos_bg -Dos_bgq -Dos_bgq_ion
432 CAP_DEF = -Dcap_dwarf
436 ifeq ($(PLATFORM),ppc32_bgp_compute)
437 OLD_DEF = -Dppc32_bluegene
438 ARCH_DEF = -Darch_power
439 OS_DEF = -Dos_bg -Dos_bgp -Dos_bg_compute
440 CAP_DEF = -Dcap_dwarf
444 ifeq ($(PLATFORM),x86_64_catamount)
445 OLD_DEF = -Dx86_64_catamount
446 ARCH_DEF = -Darch_x86_64 -Darch_64bit
447 OS_DEF = -Dos_catamount
448 CAP_DEF = -Dcap_dwarf
451 ifeq ($(PLATFORM),x86_64_cnl)
452 OLD_DEF = -Dx86_64_cnl
453 ARCH_DEF = -Darch_x86_64 -Darch_64bit
454 OS_DEF = -Dos_linux -Dos_cnl
455 CAP_DEF = -Dcap_ptrace -Dcap_stripped_binaries -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_relocation \
456 -Dcap_dwarf -Dcap_32_64 -Dcap_liveness -Dcap_fixpoint_gen -Dcap_noaddr_gen -Dcap_mutatee_traps \
457 -Dcap_instruction_api
458 BUG_DEF = -Dbug_syscall_changepc_rewind
462 ifeq ($(PLATFORM),ppc32-unknown-vxworks6.x)
463 OLD_DEF = -Dppc32_vxworks
464 ARCH_DEF = -Darch_power -Dtarget_ppc32 -Dtarget_smallmem -Dendian_mismatch
465 OS_DEF = -Dos_vxworks
466 CAP_DEF = -Dcap_relocation -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_slicing -Dcap_liveness -Dcap_fixpoint_gen -Dcap_noaddr_gen -Dno_cap_serialization -Dcap_virtual_registers -Dcap_stackwalker_use_symtab -Dcap_cache_func_starts -Dcap_instruction_replacement -Dcap_instruction_api
467 #CAP_DEF = -Dcap_mutatee_traps -Dcap_binary_rewriter -Dcap_stripped_binaries
471 ifeq ($(PLATFORM),i386-unknown-vxworks6.x)
472 OLD_DEF = -Di386_vxworks
473 ARCH_DEF = -Darch_x86 -Dtarget_smallmem
474 OS_DEF = -Dos_vxworks -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
475 CAP_DEF = -Dcap_relocation -Dcap_async_events -Dcap_threads -Dcap_dynamic_heap -Dcap_dwarf -Dcap_slicing -Dcap_liveness -Dcap_fixpoint_gen -Dcap_noaddr_gen -Dno_cap_serialization -Dcap_virtual_registers -Dcap_stackwalker_use_symtab -Dcap_cache_func_starts -Dcap_instruction_replacement -Dcap_instruction_api
476 #CAP_DEF = -Dcap_mutatee_traps -Dcap_binary_rewriter -Dcap_stripped_binaries
480 ifeq ($(PLATFORM),i386-unknown-freebsd7.2)
481 OLD_DEF = -Di386_unknown_freebsd7_0
482 ARCH_DEF = -Darch_x86
483 OS_DEF = -Dos_freebsd
484 CAP_DEF = -Dcap_instruction_api -Dcap_noaddr_gen -Dcap_dwarf -Dcap_binary_rewriter -Dcap_liveness -Dcap_fixpoint_gen -Dcap_registers -Dcap_instruction_replacement -Dcap_tramp_liveness -Dcap_relocation -Dcap_virtual_registers -Dcap_stripped_binaries -Dcap_threads -Dcap_mutatee_traps
485 BUG_DEF = -Dbug_freebsd_missing_sigstop -Dbug_freebsd_mt_suspend -Dbug_freebsd_change_pc -Dbug_phdrs_first_page -Dbug_syscall_changepc_rewind -Dbug_freebsd_attach_stop
488 ifeq ($(PLATFORM),amd64-unknown-freebsd7.2)
489 OLD_DEF = -Damd64_unknown_freebsd7_0
490 ARCH_DEF = -Darch_x86_64 -Darch_64bit
491 OS_DEF = -Dos_freebsd
492 CAP_DEF = -Dcap_instruction_api -Dcap_noaddr_gen -Dcap_dwarf -Dcap_binary_rewriter -Dcap_liveness -Dcap_fixpoint_gen -Dcap_registers -Dcap_instruction_replacement -Dcap_tramp_liveness -Dcap_relocation -Dcap_virtual_registers -Dcap_stripped_binaries -Dcap_32_64 -Dcap_threads -Dcap_mutatee_traps
493 BUG_DEF = -Dbug_freebsd_missing_sigstop -Dbug_freebsd_mt_suspend -Dbug_freebsd_change_pc -Dbug_phdrs_first_page -Dbug_syscall_changepc_rewind -Dbug_freebsd_attach_stop
498 CAP_DEF += -Dcap_thread_db
501 # Combine all the #defines for ease of use
502 UNIFIED_DEF = $(ARCH_DEF) $(OS_DEF) $(VER_DEF) $(CAP_DEF) $(BUG_DEF) $(OLD_DEF) $(AC_DEF)
503 UNIFIED_TEST_DEF = $(ARCH_DEF) $(OS_DEF) $(VER_DEF) $(CAP_DEF) $(BUG_DEF) $(OLD_DEF)
505 #ifeq (solaris,$(findstring solaris,$(PLATFORM)))
506 ifeq (solaris,$(findstring solaris,$(OS_DEF)))
507 #AS = /usr/ccs/bin/as
511 ifeq (linux,$(findstring linux,$(OS_DEF)))
516 ASFLAGS = -P $(UNIFIED_DEF)
519 ifeq (ppc64_linux, $(findstring ppc64_linux, $(PLATFORM)))
523 # set the macros that control whether the stdint limit and constant
524 # macros are defined for C++ on the compilers command line so that
525 # we don't have to worry about the ordering of #includes.
526 ifeq (linux,$(findstring linux,$(PLATFORM)))
527 STDINT_MACROS = -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
529 ifeq (freebsd,$(findstring freebsd,$(PLATFORM)))
530 STDINT_MACROS = -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
532 ifeq (bluegene,$(findstring bluegene,$(PLATFORM)))
533 STDINT_MACROS = -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
535 ifeq (bgp,$(findstring bgp,$(PLATFORM)))
536 STDINT_MACROS = -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
544 # Default module compiler; modules which want $(CC) should redefine
548 MODCFLAGS = $(CXXFLAGS)
553 # Added dyninst/external for included external dependencies - bernat, 11JUN07
554 IFLAGS = $(FIRST_INCLUDE) -I../h -I. -I$(TO_CORE) -I$(TO_CORE)/dynutil/h -I$(TO_CORE)/external
556 # uncomment/comment the line below to build with/without compilation warnings
557 # SILENCE_WARNINGS=true
559 ifndef SILENCE_WARNINGS
560 BASICWARNINGS = -W -Wall
562 COMMONWARNINGS = -W -Wall -Wshadow -Wpointer-arith \
564 -Wredundant-decls -Woverloaded-virtual
566 # not as strict as above, but can actually be used -- mdc
567 USEFULWARNINGS = -W -Wall -Wpointer-arith \
571 # being nice to poor old pathetic tcl/tk header files --ari
572 TCLFRIENDLYWARNINGS = -W -Wall -Wpointer-arith \
576 ifeq (solaris,$(findstring solaris,$(PLATFORM)))
577 COMMONWARNINGS += -Wno-unknown-pragmas
578 USEFULWARNINGS += -Wno-unknown-pragmas
579 TCLFRIENDLYWARNINGS += -Wno-unknown-pragmas
580 else # STL on Solaris with cast-align generates a warning with much output
581 COMMONWARNINGS += -Wcast-align
582 USEFULWARNINGS += -Wcast-align
584 endif # SILENCE_WARNINGS
588 GCC_VER := $(shell gcc --version)
589 ifneq (,$(findstring 2.95,$(GCC_VER)))
595 GCC_VER := $(shell gcc --version | head -n 1 | perl -ane 'print pop(@F)')
596 versionNumbers = $(sort $(GCC_VER) 2.95)
597 versionNumber = $(firstword $(versionNumbers))
598 ifneq (2.95, $(versionNumber))
604 COMMONWARNINGS += -Wno-non-template-friend
605 USEFULWARNINGS += -Wno-non-template-friend
606 TCLFRIENDLYWARNINGS += -Wno-non-template-friend
609 #don't inline -- for the files that won't emit template code
612 #inline the private members of the class -- templates.o can use this
613 TEMP_INLINE_DEFINES = -DDO_INLINE_P="inline"
615 # inline everything -- the way things should be
616 ALL_INLINE_DEFINES = -DDO_INLINE_F="inline" -DDO_INLINE_P="inline"
619 ifeq (solaris,$(findstring solaris,$(PLATFORM)))
620 USES_LIBDYNINST_SO = true
622 ifeq (linux,$(findstring linux,$(PLATFORM)))
623 USES_LIBDYNINST_SO = true
626 # Set this variable if it's desired that dyninst be built with the native
627 # compiler on Solaris
631 ifeq (solaris,$(findstring solaris,$(PLATFORM)))
632 USES_LIBDYNINST_SO = true
633 USES_NATIVE_CC = true
639 ifeq (ibm-aix,$(findstring ibm-aix,$(PLATFORM)))
640 ifndef IBM_BPATCH_COMPAT
641 USES_LIBDYNINST_SO = true
644 USES_PERF_LIBRARY = true
645 # No longer used, because of relocation.
646 #USES_LIB_TEXT_HEAP = true
648 ifdef IBM_BPATCH_COMPAT
649 ifeq (ibm-aix, $(findstring ibm-aix, $(PLATFORM)))
650 USES_NATIVE_CC = true
654 DEPENDFLAGS = -M -E -qhalt=E -qro -qtbtable=full -DCOMPILER="xlC"
658 # As of AIX 5, the pm_init function in libpmapi takes more
659 # parameters. This is keyed by the USES_PMAPI_GROUPS define,
660 # and handled in the paradyn runtime library
661 PMAPI_VERSION := $(shell uname -v )
662 ifeq (5, $(findstring 5,$(PMAPI_VERSION)))
663 USES_PMAPI_GROUPS = true
667 # if we don't want OPT_FLAG defined for a particular part of the code
668 # (e.g. rtinst for aix), we just need to define NO_OPT_FLAG before doing
669 # the include of make.config - naim
674 # Do we shorten compile lines?
675 ifndef VERBOSE_COMPILATION
679 ifeq (ibm-aix64-, $(findstring ibm-aix64-, $(PLATFORM)))
680 ARCH_FLAGS = -maix64 -Drs6000_ibm_aix64
683 ifeq (ppc64_linux, $(findstring ppc64_linux, $(PLATFORM)))
687 # flags for normal (non-kludge) files, with common warnings
688 CFLAGS = $(IFLAGS) $(UNIFIED_DEF) $(OPT_FLAG) $(COMMON_WARNINGS) $(ARCH_FLAGS)
689 CXXFLAGS = $(IFLAGS) $(UNIFIED_DEF) $(OPT_FLAG) $(COMMON_WARNINGS) $(STDINT_MACROS) $(ARCH_FLAGS)
690 LDFLAGS = $(ARCH_FLAGS)
692 # flags for kludge files, won't have warnings generated
693 KFLAGS = $(IFLAGS) $(UNIFIED_DEF) $(BASICWARNINGS)
697 CFLAGS += -fprofile-arcs -ftest-coverage
698 CXXFLAGS += -fprofile-arcs -ftest-coverage
699 LDFLAGS += -fprofile-arcs -ftest-coverage
704 CFLAGS += -DPURE_BUILD
705 CXXFLAGS += -DPURE_BUILD
708 ifdef USES_PERF_LIBRARY
709 # Add any platform-specific performance libraries here
710 ifeq (ibm-aix,$(findstring ibm-aix,$(PLATFORM)))
712 CFLAGS += -DUSES_PMAPI
713 CXXFLAGS += -DUSES_PMAPI
715 ifdef USES_PMAPI_GROUPS
716 CFLAGS += -DPMAPI_GROUPS
717 CXXFLAGS += -DPMAPI_GROUPS
718 endif # USES_PMAPI_GROUPS
722 ifdef USE_DEPRECATED_BPATCH_VECTOR
723 CXXFLAGS += -DUSE_DEPRECATED_BPATCH_VECTOR
724 CFLAGS += -DUSE_DEPRECATED_BPATCH_VECTOR
725 TFLAGS += -DUSE_DEPRECATED_BPATCH_VECTOR
727 #CFLAGS += -fimplicit-templates
728 CXXFLAGS += -fimplicit-templates
729 TFLAGS += -fimplicit-templates
733 SONAME_FLAGS = -Wl,-soname,$(TARGET).$(RELEASE_NUM)
736 ifdef IBM_BPATCH_COMPAT
737 CXXFLAGS += -DIBM_BPATCH_COMPAT
738 CFLAGS += -DIBM_BPATCH_COMPAT
746 ifeq ($(DEBUG_FLAG),none)
751 CFLAGS += $(DEBUG_FLAG)
752 CXXFLAGS += $(DEBUG_FLAG)
753 KFLAGS += $(DEBUG_FLAG)
756 ifdef VERBOSE_CFG_ACCOUNTING
757 CFLAGS += -DVERBOSE_CFG_FACTORY
758 CXXFLAGS += -DVERBOSE_CFG_FACTORY
761 # flags for template files, don't define external template flags
762 # -g is optional in this case -- should be defined at module level
763 TFLAGS = $(IFLAGS) $(TEMP_INLINE_DEFINES) $(UNIFIED_DEF) $(OPT_FLAG) $(BASICWARNINGS) $(STDINT_MACROS) $(ARCH_FLAGS)
766 CFLAGS += $(ALL_INLINE_DEFINES)
767 CXXFLAGS += $(ALL_INLINE_DEFINES)
770 # Start off LIBDIR to point to the user's devel area's paradyn lib directory.
771 # As a backup, in case the user hasn't checked out & compiled some paradyn lib,
772 LIBDIR = $(FIRST_LIBDIR) \
773 -L$(TO_CORE)/../$(PLATFORM)/lib
775 # Set IGEN to point to $(TO_CORE)/../bin/$(PLATFORM)/igen, if it exists,
776 # else set it to just "igen" (i.e. assume it's in the user's path)
778 IGEN = $(shell if [ -f ${TO_CORE}/../${BASEPLATFORM}/bin/igen ]; then echo ${TO_CORE}/../${BASEPLATFORM}/bin/igen; else if [ -f ${TO_CORE}/igen/${BASEPLATFORM}/igen ]; then echo ${TO_CORE}/igen/${BASEPLATFORM}/igen; else echo igen; fi; fi )
780 IGEN = $(shell if [ -f ${TO_CORE}/${PROGRAM_DEST}/igen ]; then echo ${TO_CORE}/${PROGRAM_DEST}/igen; else if [ -f ${TO_CORE}/igen/$(PLATFORM)/igen ]; then echo ${TO_CORE}/igen/${PLATFORM}/igen; else echo igen; fi; fi )
783 ifdef NO_IMPLICIT_TEMPLATES
784 ifdef USE_DEPRECATED_BPATCH_VECTOR
785 # CFLAGS += -fno-implicit-templates
786 CXXFLAGS += -fno-implicit-templates
787 KFLAGS += -fno-implicit-templates
791 ifndef INSTANTIATE_TEMPLATES
792 ifndef NO_IMPLICIT_TEMPLATES
793 # -fexternal-templates and -Dexternal_templates should both be used or
794 # neither should be used; add them to CFLAGS, CXXFLAGS, and KFLAGS
795 # (but not to TFLAGS).
797 #CFLAGS += -fexternal-templates -Dexternal_templates
798 #CXXFLAGS += -fexternal-templates -Dexternal_templates
799 #KFLAGS += -fexternal-templates -Dexternal_templates
806 ifeq (xyes,x$(USE_PTHREADS))
807 THREADSLIB += -lpthread
809 # On Linux, programs using pthreads are supposed to define _REENTRANT
810 ifeq (linux,$(findstring linux,$(PLATFORM)))
811 CFLAGS += -D_REENTRANT=1
812 CXXFLAGS += -D_REENTRANT=1
813 KFLAGS += -D_REENTRANT=1
814 TFLAGS += -D_REENTRANT=1
818 ifeq (freebsd,$(findstring freebsd,$(PLATFORM)))
819 CFLAGS += -D_REENTRANT=1
820 CXXFLAGS += -D_REENTRANT=1
821 KFLAGS += -D_REENTRANT=1
822 TFLAGS += -D_REENTRANT=1
825 ifeq (ibm-aix,$(findstring ibm-aix,$(PLATFORM)))
826 #CFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
827 #CXXFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
828 #KFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
829 #TFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
832 ifeq (solaris,$(findstring solaris,$(PLATFORM)))
833 CFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
834 CXXFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
835 KFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
836 TFLAGS += -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_THREAD_SAFE_ERRNO=1
841 # System build constraints
842 #Build the MT daemon on AIX, Solaris, and Linux/x86
843 DONT_BUILD_PD_MT = true
844 ifeq (ibm-aix,$(findstring ibm-aix,$(PLATFORM)))
847 ifeq (sparc-sun-solaris,$(findstring sparc-sun-solaris,$(PLATFORM)))
850 ifeq (i386-unknown-linux2.4,$(findstring i386-unknown-linux2.4,$(PLATFORM)))
854 ifeq (ppc32_bgp,$(findstring ppc32_bgp,$(PLATFORM)))
855 DONT_BUILD_NEWTESTSUITE = true
858 CFLAGS += -Dcap_mmtimer
859 CXXFLAGS += -Dcap_mmtimer
862 ifdef USES_UNWIND_LIB
863 CFLAGS += -Dcap_unwind
864 CXXFLAGS += -Dcap_unwind
865 LIBUNWIND_LIB ?= $(LIBUNWINDDIR)/lib
866 LIBUNWIND_INC ?= $(LIBUNWINDDIR)/include
869 ifeq (solaris,$(findstring solaris,$(PLATFORM)))
870 LIBELF_PLATFORM = "true"
871 LIBDWARF_PLATFORM = "true"
873 ifeq (linux,$(findstring linux,$(PLATFORM)))
874 LIBELF_PLATFORM = "true"
875 LIBDWARF_PLATFORM = "true"
877 ifeq (freebsd,$(findstring freebsd,$(PLATFORM)))
878 LIBELF_PLATFORM = "true"
879 LIBDWARF_PLATFORM = "true"
881 ifeq (vxworks,$(findstring vxworks,$(PLATFORM)))
882 LIBELF_PLATFORM = "true"
883 LIBDWARF_PLATFORM = "true"
885 ifeq (_bgq,$(findstring _bgq,$(PLATFORM)))
886 LIBELF_PLATFORM = "true"
887 LIBDWARF_PLATFORM = "true"
889 ifeq (_bgp,$(findstring _bgp,$(PLATFORM)))
890 LIBELF_PLATFORM = "true"
891 LIBDWARF_PLATFORM = "true"
893 ifeq (_bgl,$(findstring _bgl,$(PLATFORM)))
894 LIBELF_PLATFORM = "true"
895 LIBDWARF_PLATFORM = "true"
897 ifeq (_cnl,$(findstring _cnl,$(PLATFORM)))
898 LIBELF_PLATFORM = "true"
899 LIBDWARF_PLATFORM = "true"
902 ifdef HAVE_NATIVE_DEMANGLER
903 LDFLAGS += -ldemangle
904 CAP_DEF += -Dcap_native_demangler
908 CAP_DEF += -Dcap_gnu_demangler
912 CAP_DEF += -Dcap_liberty
915 DEMANGLER_LINK = -L$(LIBIBERTY_LIB) -liberty
917 DEMANGLER_LINK = -liberty
920 CAP_DEF += -Dcap_liberty_exec
922 DEMANGLER_EXEC_LINK = -L$(LIBIBERTY_LIB) -liberty
924 DEMANGLER_EXEC_LINK = -liberty
931 WITHLIBFL = --with-libfldir=$(FLEX_DIR)
937 #Build other variables based off of the above defaults
940 # use the first set if using tcl8.4,
941 # use the second set if still using tcl8.3
944 TCLTK_LIBVER_ID = 8.4
945 CFLAGS += -DTCLCONST=const
946 CXXFLAGS += -DTCLCONST=const
947 KFLAGS += -DTCLCONST=const
948 TFLAGS += -DTCLCONST=const
952 TCLTK_LIBVER_ID = 8.3
953 CFLAGS += -DTCLCONST=""
954 CXXFLAGS += -DTCLCONST=""
955 KFLAGS += -DTCLCONST=""
956 TFLAGS += -DTCLCONST=""
960 TCL_LIB = -ltcl$(TCLTK_LIBVER_ID)
961 TK_LIB = -ltk$(TCLTK_LIBVER_ID)
964 TCLTK_LIBS += -Wl,-Bstatic $(TCL_LIB) $(TK_LIB) -Wl,-Bdynamic
966 TCLTK_LIBS += $(TCL_LIB) $(TK_LIB)
969 # TCL2C is used to generate compilable sources from tcl files
970 TCL2C = $(TO_CORE)/../scripts/tcl2c
971 TCL2C_GEN_SRCS = tcl2c.C
973 IFLAGS += -I$(TCLTK_INC_DIR)
975 LIBDIR += $(patsubst %,-L%/rs_aix41/lib,$(TCLTK_DIR))
977 LIBDIR += $(patsubst %,-L%,$(TCLTK_LIB_DIR))
983 PAPI_INCDIR = $(PAPI_ROOT)
984 PAPI_LIBDIR = $(PAPI_ROOT)
985 #PAPI_LIB = -Wl,-static -lpapi -Wl,-Bdynamic
986 #PAPI_LIB = $(PAPI_LIBDIR)/libpapi.a
987 PAPI_LIB = -Wl,-rpath=$(PAPI_LIBDIR) -L$(PAPI_LIBDIR) -lpapi
988 IFLAGS += -I$(PAPI_INCDIR)
989 LIBDIR += $(patsubst %,-L%,$(PAPI_LIBDIR))
998 LIBDIR += $(patsubst %,-L%,$(FLEX_DIR))
1004 # no /s or /p allowed here
1005 #FLEX_DIR = /s/flex/rs_aix41/lib
1006 #LIBDIR += -L/p/sp2/gcc/lib
1009 ifdef LIBDWARF_HASSETFRAME
1010 CAP_DEF += -Ddwarf_has_setframe
1016 ifeq (solaris,$(findstring solaris,$(PLATFORM)))
1017 X11DIR = /usr/openwin
1018 CFLAGS += -I$(X11DIR)/include
1019 CXXFLAGS += -I$(X11DIR)/include
1020 TFLAGS += -I$(X11DIR)/include
1021 LIBDIR += -R$(X11DIR)/lib -L$(X11DIR)/lib
1024 ifeq (linux,$(findstring linux,$(PLATFORM)))
1026 CFLAGS += -I$(X11DIR)/include/X11
1027 CXXFLAGS += -I$(X11DIR)/include/X11
1028 TFLAGS += -I$(X11DIR)/include/X11
1029 LIBDIR += -L$(X11DIR)/lib
1032 ifeq (x86_64,$(findstring x86_64,$(PLATFORM)))
1033 LIBDIR += -L$(X11DIR)/lib64
1035 ifeq (ibm-aix,$(findstring ibm-aix,$(PLATFORM)))