Created new 'sparc-sun-solaris2.9' platform for testing with Solaris 9.
[dyninst.git] / dyninstAPI / tests / sparc-sun-solaris2.9 / Makefile
1 #
2 # Makefile for test programs on Sparc Solaris 2.4
3 #
4 # $Id: Makefile,v 1.1 2003/09/30 14:20:45 jodom Exp $
5 #
6
7 # Define any symbols needed to invoke configuration changes in make.config
8 TO_CORE =       ../../..
9 NO_OPT_FLAG=true
10 NO_IMPLICIT_TEMPLATES = true
11
12 APP_PURE_OPTIONS = 
13
14 USES_MUTATEE_LIBS = true
15 MUTATEE_LIBS = -ldl
16 MUTATEE_TEST9_LIBS_LIST = libInstMe.so libLoadMe.so
17 MUTATEE_TEST9_LIBS = -L. -lInstMe 
18 # -lInstMe
19
20 # VG(12/02/01): Using stabs for dbx because gdb 5.0 cannot continue a
21 # mutatee stopped by a dyninst mutator (on our 24-way SunFire at
22 # least). BTW, -g appeard an awful number of times in this file...
23
24 # This is used by make.config for ALL compilers (unfortunately)
25 # It is really only for gcc
26 DEBUG_FLAG = -g
27
28 # Include standard make configuration stuff that applies to everything
29 # in the paradyn tree.
30 include $(TO_CORE)/make.config 
31
32 # This is used in this file for the native compiler(s)
33 NATIVE_DEBUG_FLAG = -g -xs
34
35 # Now make any necessary architecture specific changes to variables:
36
37 #CXXFLAGS += -gstabs -DUSES_DYNAMIC_INF_HEAP
38 #CFLAGS += -gstabs -DUSES_DYNAMIC_INF_HEAP
39
40 # FIXME: This is a bad place for the debug flag...
41 SYSLIBS += $(DEBUG_FLAG) -lelf -lstdc++
42
43 MUTATEE_FFLAGS += -Dsparc_sun_solaris2_4 $(NATIVE_DEBUG_FLAG)
44
45 #the _ALT PATH is in case the gcc library can't be found in the first path
46 ifdef GCC_2_95
47 LIBGCCLOC = /p/paradyn/packages/gcc-2.95.3/lib/gcc-lib/PLATFORM/2.95.3
48 # Allowing _ALT path to be changed in make.config.local
49 # The default _ALT path is for UMD Solaris 8 machines.
50 LIBGCCLOC_ALT ?= /usr/local/gcc-2.95.3-cv/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3
51 else
52 LIBGCCLOC = /s/gcc-3.2.2/lib/gcc-lib/sparc-sun-solaris2.8/3.2.2
53 LIBGCCLOC_ALT ?= /usr/local/gcc-2.95.3-cv/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3
54 endif
55 MUTATEE_FLINKFLAGS += -L$(LIBGCCLOC) -L$(LIBGCCLOC_ALT) -ldl -lgcc
56
57 M_GCC = $(GCC)
58 M_GXX = $(GXX)
59
60 # define these only if not invoked recursively, otherwise they're set
61 ifndef MUTATEE_CC
62 export NATIVE_CC = cc
63 export NATIVE_CXX = CC
64 export NATIVE_FC = f90
65
66 # skip the builds with native (WorkShop) compilers if they're not available
67 ifeq (,$(findstring Forte,$(shell $(NATIVE_CC) -V 2>&1)))
68 ifeq (,$(findstring WorkShop,$(shell $(NATIVE_CC) -V 2>&1)))
69 ifeq (,$(findstring Sun C ,$(shell $(NATIVE_CC) -V 2>&1)))
70 NATIVE_CC =
71 #$(warning No cc)
72 endif
73 endif
74 endif
75
76 # One may have cc without CC...
77 ifeq (,$(findstring Forte,$(shell $(NATIVE_CXX) -V 2>&1)))
78 ifeq (,$(findstring WorkShop,$(shell $(NATIVE_CXX) -V 2>&1)))
79 ifeq (,$(findstring Sun C++,$(shell $(NATIVE_CXX) -V 2>&1)))
80 NATIVE_CXX =
81 #$(warning No CC)
82 endif
83 endif
84 endif
85
86 # One may have cc without f90...
87 ifeq (,$(findstring Forte,$(shell $(NATIVE_FC) -V 2>&1)))
88 ifeq (,$(findstring WorkShop,$(shell $(NATIVE_FC) -V 2>&1)))
89 ifeq (,$(findstring Sun Fortran,$(shell $(NATIVE_FC) -V 2>&1)))
90 NATIVE_FC =
91 #$(warning No F)
92 endif
93 endif
94 endif
95 endif
96
97 MINI_PLATFORM = sparc
98 TEST6_ASFLAGS = -P -xarch=v8plus
99 TEST6_ASSUFFIX = S
100
101 # Include the module-specific Makefile, which defines everything about
102 # the module that is common across architectures.
103
104 include ../make.module.tmpl
105
106
107
108 COMPILERT = $(shell $(MUTATEE_CC) -v 2>&1 | grep version | head -1)
109
110 ifeq ($(MUTATEE_CC),$(NATIVE_CC))
111 COMPILERT = $(shell $(MUTATEE_CC) -V 2>&1 | head -1)
112 MUTATEE_CFLAGS = $(ARCH_DEF) $(NATIVE_DEBUG_FLAG) -Wa,-xarch=v8plus
113 else
114 MUTATEE_CFLAGS = $(MODCFLAGS) $(DEBUG_FLAG)
115 endif
116
117 ifeq ($(MUTATEE_CC),$(NATIVE_CXX))
118 # using "-instances=static" or "-instances=global" flag allows the template 
119 # instantiations being in the current object file and gives them static and
120 # global linkage respectively
121
122 # VG(12/02/01): Overriding these to put the right debug flag
123 MUTATEE_CFLAGS = $(ARCH_DEF) $(NATIVE_DEBUG_FLAG) -instances=static
124
125 COMPILERT = $(shell $(MUTATEE_CC) -V 2>&1 | head -1)
126 endif
127
128 EMPTY:=
129 BLANK:=$(EMPTY) $(EMPTY)
130 LPAREN:=(
131 RPAREN:=)
132 COMPILER1 = $(subst $(BLANK),_,$(COMPILERT))
133 COMPILER2 = $(subst $(LPAREN),_,$(COMPILER1))
134 COMPILER = $(subst $(RPAREN),_,$(COMPILER2))
135 MUTATEE_CFLAGS += -DCOMPILER='"$(COMPILER)"'
136
137 ### C/C++ mutatee target rule ###
138 # MUTATEE_CC gets set even for Fortran targets. The only way
139 # to check for C/C++ mutatee is to look at MUTATEE_FC.
140 ###
141 ifndef MUTATEE_FC
142 $(TARGET2):  $(MUTATEE_SRC)
143         $(MUTATEE_CC) $(MUTATEE_CFLAGS) $(MUTATEE_SRC) $(MUTATEE_OBJS) -o $@ $(MUTLIBS) 
144 endif
145
146 ### Fortran mutatee targets rules ###
147 # First check if we have found a native Fortran compiler.
148 # Then check if MUTATEE_FC matches it. For C/C++ targets
149 # MUTATEE_FC is undefined. NATIVE_FC may also be undefined
150 # if no Fortran compiler is found; the first check is useful.
151 ###
152 ifdef NATIVE_FC
153 ifeq ($(NATIVE_FC),$(MUTATEE_FC))
154
155 COMPILER = f90
156
157 # FORTRAN_BASE = test1.mutateeFort, etc.
158 FORTRAN_BASE = $(TARGET2:_$(NATIVE_FC)=Fort)
159
160 # VG: Recompile the common stuff with the same C compiler (gcc) as the Fortran
161 # test C code. This prevents the very nasty situation where a C++ object file
162 # produced by another compiler (CC) is fed to the linker (which doesn't take it).
163 $(TARGET2): $(FORTRAN_BASE)_$(NATIVE_FC).o $(FORTRAN_BASE)C_$(NATIVE_FC).o
164         $(MUTATEE_CC) $(MUTATEE_CFLAGS) -W -Wall -c -o test1.mutateeCommon.o ../src/test1.mutateeCommon.c
165         $(MUTATEE_CC) $(MUTATEE_CFLAGS) -W -Wall -c -o mutatee_util.o ../src/mutatee_util.c
166         $(NATIVE_FC) $(MUTATEE_FFLAGS) ../src/$(FORTRAN_BASE).F $(FORTRAN_BASE)C_$(NATIVE_FC).o test1.mutateeCommon.o mutatee_util.o $(MUTATEE_FLINKFLAGS) -o $(TARGET2)
167
168 $(FORTRAN_BASE)_$(NATIVE_FC).o:
169         $(NATIVE_FC) $(MUTATEE_FFLAGS) -c -o $(FORTRAN_BASE)_$(NATIVE_FC).o ../src/$(FORTRAN_BASE).F
170
171 $(FORTRAN_BASE)C_$(NATIVE_FC).o:
172         $(MUTATEE_CC) $(MUTATEE_CFLAGS) -fno-implicit-templates -W -Wall $(FORT_SQGL_FLAG) -DFortran -c -o $(FORTRAN_BASE)C_$(NATIVE_FC).o ../src/$(FORTRAN_BASE)C.c
173
174 endif
175 endif
176
177 ifeq (test1,$(findstring test1,$(TARGET2)))
178 MUTATEE_SRC     +=      ../src/call35_1_sparc_solaris.s
179 endif
180
181
182 #MODCC = purecov -best-effort g++
183
184 libtestA.o:
185         $(CC) $(PICOP) -c ../src/libtestA.c
186
187 libtestB.o:
188         $(CC) $(PICOP) -c ../src/libtestB.c
189
190 libtestA.so: libtestA.o
191         $(CC) $(SHAREDOP) -o libtestA.so libtestA.o
192
193 libtestB.so: libtestB.o
194         $(CC) $(SHAREDOP) -o libtestB.so libtestB.o
195
196
197 libLoadMe.o:  libLoadMe.c
198         $(CC) $(PICOP) -c ../src/libLoadMe.c
199
200 libLoadMe.so: libLoadMe.o
201         $(CC)  $(SHAREDOP) -z initarray=loadMe_init libLoadMe.o -o libLoadMe.so
202
203 libInstMe.o:  libInstMe.c
204         $(CC) $(PICOP) -c ../src/libInstMe.c
205
206 libInstMe.so: libInstMe.o
207         $(CC)  $(SHAREDOP) libInstMe.o -o libInstMe.so
208
209
210
211
212 # Include the "standard program template".  This defines all the
213 # common targets like "clean", "install", etc.
214
215 include $(TO_CORE)/make.program.tmpl
216