/ani/mrses

To get this branch, use:
bzr branch http://darksoft.org/webbzr/ani/mrses

« back to all changes in this revision

Viewing changes to cell/buildutils/make.footer

  • Committer: Suren A. Chilingaryan
  • Date: 2010-04-28 04:30:08 UTC
  • Revision ID: csa@dside.dyndns.org-20100428043008-vd9z0nso9axezvlp
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# --------------------------------------------------------------  
 
2
# (C)Copyright 2001,2008,                                         
 
3
# International Business Machines Corporation,                    
 
4
# Sony Computer Entertainment, Incorporated,                      
 
5
# Toshiba Corporation,                                            
 
6
#                                                                 
 
7
# All Rights Reserved.                                            
 
8
# --------------------------------------------------------------  
 
9
# PROLOG END TAG zYx                                              
 
10
 
 
11
ifndef __MAKE_FOOTER__
 
12
__MAKE_FOOTER__         := 1
 
13
 
 
14
ifeq "$(MAKEFILE_LIST)" ""
 
15
 
 
16
  ########################################################################
 
17
  #                     Makefile Version < 3.80
 
18
  ########################################################################
 
19
 
 
20
  USR_LOCAL             ?= /usr/local
 
21
  MAKE_3_80             ?= $(firstword $(wildcard                       \
 
22
                                $(USR_LOCAL)/sti/bin/make               \
 
23
                                $(USR_LOCAL)/sti/latest-sdk/bin/make    \
 
24
                                $(USR_LOCAL)/sti/*/bin/make))
 
25
  _MAKECMDGOALS         := $(MAKECMDGOALS)
 
26
 
 
27
  $(warning $(MAKE) (v$(MAKE_VERSION)) is too old -- looking for v3.80)
 
28
 
 
29
  ifeq "$(MAKE_3_80)" ""
 
30
    $(error "make" v3.80 not found)
 
31
  else
 
32
 
 
33
    rerun_make $(_MAKECMDGOALS):
 
34
        @echo "Found $(MAKE_3_80)"
 
35
        @echo
 
36
        @echo "Automatically restarting make:"
 
37
        @echo "    $(MAKE_3_80) $(MAKECMDGOALS)"
 
38
        @echo
 
39
        @          $(MAKE_3_80) $(MAKECMDGOALS)
 
40
  endif
 
41
 
 
42
else
 
43
 
 
44
# At this point, make.footer is always the last one in MAKEFILE_LIST
 
45
make_footer             := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
 
46
 
 
47
ifndef CELL_TOP
 
48
  CELL_TOP_buildutils   = $(dir $(make_footer))
 
49
  export CELL_TOP       = $(shell cd $(CELL_TOP_buildutils)/.. && pwd)
 
50
endif
 
51
 
 
52
ifndef __MAKE_HEADER__
 
53
  ifneq "$(MAKEFILE_LIST)" ""
 
54
    include $(CELL_TOP)/buildutils/make.header
 
55
  endif
 
56
endif
 
57
 
 
58
HOST_PROCESSOR  := $(shell uname -m)
 
59
 
 
60
PPU64_PROCESSOR_TYPE := $(shell grep "^cpu" /proc/cpuinfo | grep "Cell Broadband Engine" > /dev/null; if [ $$? = 0 ]; then  echo "Cell"; fi)
 
61
 
 
62
 
 
63
########################################################################
 
64
#                       Default Targets
 
65
########################################################################
 
66
 
 
67
all: dirs libraries programs misc_ install
 
68
 
 
69
 
 
70
########################################################################
 
71
#               Systemsim Hardware Simulator Defines
 
72
########################################################################
 
73
 
 
74
# The systemsim hardware simulator can be installed anywhere, but the default
 
75
# is to expect it with everything else.
 
76
 
 
77
ifndef SYSTEMSIM_TOP
 
78
  SYSTEMSIM_TOP         = /opt/ibm/systemsim-cell
 
79
endif
 
80
 
 
81
SYSTEMSIM_INCLUDE_spu   = $(SYSTEMSIM_TOP)/include/callthru/spu
 
82
SYSTEMSIM_INCLUDE_ppu   = $(SYSTEMSIM_TOP)/include/callthru
 
83
SYSTEMSIM_INCLUDE_ppu64 = $(SYSTEMSIM_TOP)/include/callthru
 
84
SYSTEMSIM_INCLUDE       = $(SYSTEMSIM_INCLUDE_$(__tp__))
 
85
 
 
86
SYSTEMSIM_LINUX         = $(SYSTEMSIM_TOP)/run/cell/linux
 
87
 
 
88
 
 
89
########################################################################
 
90
#               Common GNU Defines (Host, PPU32, PPU64, SPU)
 
91
########################################################################
 
92
 
 
93
PPU_PREFIX              = ppu-
 
94
PPU32_PREFIX            = ppu32-
 
95
 
 
96
PPU_TOOL_PREFIX         = $(PPU_PREFIX)
 
97
PPU32_TOOL_PREFIX       = $(PPU32_PREFIX)
 
98
 
 
99
ifeq "$(HOST_PROCESSOR)" "ppc64"
 
100
  GNU_ROOT              =
 
101
  GNU_SYSROOT           =
 
102
  GNU_PPU_BINDIR        = /usr/bin
 
103
  GNU_SPU_BINDIR        = /usr/bin
 
104
else
 
105
  GNU_ROOT              = /opt/cell/toolchain
 
106
  GNU_SYSROOT           = /opt/cell/sysroot
 
107
  GNU_PPU_BINDIR        = $(GNU_ROOT)/bin
 
108
  GNU_SPU_BINDIR        = $(GNU_ROOT)/bin
 
109
endif
 
110
 
 
111
SPU_TOOL_PREFIX         = spu-
 
112
 
 
113
PPU32_BINDIR            = $(GNU_PPU_BINDIR)
 
114
PPU64_BINDIR            = $(GNU_PPU_BINDIR)
 
115
SPU_BINDIR              = $(GNU_SPU_BINDIR)
 
116
 
 
117
ifndef CCACHE
 
118
  export CCACHE         := $(shell which ccache 2>/dev/null)
 
119
endif
 
120
 
 
121
########################################################################
 
122
#               Common Fortran Defines
 
123
########################################################################
 
124
 
 
125
FTN_SPU_BINDIR_xlf=/opt/cell/toolchain/bin
 
126
FTN_PPU_BINDIR_xlf=/opt/cell/toolchain/bin
 
127
FTN_BINDIR_gfortran=/usr/bin
 
128
 
 
129
########################################################################
 
130
#                       Processor Targets
 
131
########################################################################
 
132
 
 
133
# Set what to build, and what processor to target
 
134
# Cross-Compile targets are ppu, ppu64, spu.
 
135
# Native targets include i686, ppc64.
 
136
 
 
137
 
 
138
#********************
 
139
# SPU Targets
 
140
#********************
 
141
 
 
142
SPU_TARGETS             := $(strip $(PROGRAM_spu)               \
 
143
                                   $(PROGRAMS_spu)              \
 
144
                                   $(LIBRARY_spu)               \
 
145
                                   $(LIBRARY_embed)             \
 
146
                                   $(LIBRARY_embed64)           \
 
147
                                   $(SHARED_LIBRARY_embed)      \
 
148
                                   $(SHARED_LIBRARY_embed64))
 
149
 
 
150
ifdef SPU_TARGETS
 
151
  TARGET_PROCESSOR      := spu
 
152
endif
 
153
 
 
154
 
 
155
#********************
 
156
# 32-bit PPU Targets
 
157
#********************
 
158
 
 
159
PPU_TARGETS             := $(strip $(PROGRAM_ppu)               \
 
160
                                   $(PROGRAMS_ppu)              \
 
161
                                   $(LIBRARY_ppu)               \
 
162
                                   $(SHARED_LIBRARY_ppu))
 
163
 
 
164
ifdef PPU_TARGETS
 
165
  TARGET_PROCESSOR      := ppu
 
166
endif
 
167
 
 
168
 
 
169
#********************
 
170
# 64-bit PPU Targets
 
171
#********************
 
172
 
 
173
PPU64_TARGETS           := $(strip $(PROGRAM_ppu64)             \
 
174
                                   $(PROGRAMS_ppu64)            \
 
175
                                   $(LIBRARY_ppu64)             \
 
176
                                   $(SHARED_LIBRARY_ppu64))
 
177
 
 
178
ifdef PPU64_TARGETS
 
179
  TARGET_PROCESSOR      := ppu64
 
180
endif
 
181
 
 
182
 
 
183
#####################
 
184
# Host Targets
 
185
#####################
 
186
 
 
187
 
 
188
ifndef TARGET_PROCESSOR
 
189
  TARGET_PROCESSOR      := $(HOST_PROCESSOR)
 
190
endif
 
191
 
 
192
ifeq "$(TARGET_PROCESSOR)" "host"
 
193
  TARGET_PROCESSOR      := $(HOST_PROCESSOR)
 
194
endif
 
195
 
 
196
ifeq "$(TARGET_PROCESSOR)" "$(HOST_PROCESSOR)"
 
197
  __host__              = 1
 
198
endif
 
199
 
 
200
 
 
201
##########################################################
 
202
# SPU Programs and Plugins Embedded in 32-bit PPU Objects
 
203
##########################################################
 
204
 
 
205
ifdef LIBRARY_embed
 
206
  _EMBED                = 1
 
207
endif
 
208
 
 
209
ifdef SHARED_LIBRARY_embed
 
210
  _EMBED                = 1
 
211
endif
 
212
 
 
213
 
 
214
##########################################################
 
215
# SPU Programs and Plugins Embedded in 64-bit PPU Objects
 
216
##########################################################
 
217
 
 
218
ifdef LIBRARY_embed64
 
219
  _EMBED64              = 1
 
220
endif
 
221
 
 
222
ifdef SHARED_LIBRARY_embed64
 
223
  _EMBED64              = 1
 
224
endif
 
225
 
 
226
 
 
227
#####################
 
228
# Generic Targets
 
229
#####################
 
230
 
 
231
__tp__                  = $(TARGET_PROCESSOR)
 
232
__$(__tp__)__           = 1
 
233
 
 
234
# __ppu__ means ppu32 and __ppu64__ means ppu64
 
235
# we want a generic 'ppu either 32 or 64' since make doesn't do
 
236
#  ifdef __ppu__ or __ppu64__
 
237
ifdef __ppu__
 
238
 __ppu3264__            = 1
 
239
endif
 
240
ifdef __ppu64__
 
241
 __ppu3264__            = 1
 
242
endif
 
243
 
 
244
PROGRAM                 += $(PROGRAM_$(__tp__))
 
245
PROGRAMS                += $(PROGRAMS_$(__tp__))
 
246
LIBRARY                 += $(LIBRARY_$(__tp__))
 
247
SHARED_LIBRARY          += $(SHARED_LIBRARY_$(__tp__))
 
248
 
 
249
 
 
250
#*****************************
 
251
# Split the target name from
 
252
# its install directory
 
253
#*****************************
 
254
 
 
255
get_dir         = $(strip $(subst ./,,$(dir $(1))))
 
256
get_name        = $(notdir $(1))
 
257
 
 
258
ifneq "$(PROGRAM)" ""
 
259
  _PROGRAM_dir              := $(call get_dir, $(PROGRAM))
 
260
  _PROGRAM                  := $(call get_name,$(PROGRAM))
 
261
endif
 
262
 
 
263
ifneq "$(PROGRAMS)" ""
 
264
  _PROGRAMS_dirs            := $(call get_dir, $(PROGRAMS))
 
265
  _PROGRAMS                 := $(call get_name,$(PROGRAMS))
 
266
endif
 
267
 
 
268
ifneq "$(LIBRARY)" ""
 
269
  _LIBRARY_dir              := $(call get_dir, $(LIBRARY))
 
270
  _LIBRARY                  := $(call get_name,$(LIBRARY))
 
271
endif
 
272
 
 
273
ifneq "$(LIBRARY_embed)" ""
 
274
  _LIBRARY_embed_dir        := $(call get_dir, $(LIBRARY_embed))
 
275
  _LIBRARY_embed            := $(call get_name,$(LIBRARY_embed))
 
276
endif
 
277
 
 
278
ifneq "$(LIBRARY_embed64)" ""
 
279
  _LIBRARY_embed64_dir      := $(call get_dir, $(LIBRARY_embed64))
 
280
  _LIBRARY_embed64          := $(call get_name,$(LIBRARY_embed64))
 
281
endif
 
282
 
 
283
ifneq "$(SHARED_LIBRARY)" ""
 
284
  _SHARED_LIBRARY_dir       := $(call get_dir, $(SHARED_LIBRARY))
 
285
  _SHARED_LIBRARY           := $(call get_name,$(SHARED_LIBRARY))
 
286
endif
 
287
 
 
288
ifneq "$(SHARED_LIBRARY_embed)" ""
 
289
  _SHARED_LIBRARY_embed_dir := $(call get_dir, $(SHARED_LIBRARY_embed))
 
290
  _SHARED_LIBRARY_embed     := $(call get_name,$(SHARED_LIBRARY_embed))
 
291
endif
 
292
 
 
293
ifneq "$(SHARED_LIBRARY_embed64)" ""
 
294
  _SHARED_LIBRARY_embed64_dir := $(call get_dir, $(SHARED_LIBRARY_embed64))
 
295
  _SHARED_LIBRARY_embed64     := $(call get_name,$(SHARED_LIBRARY_embed64))
 
296
endif
 
297
 
 
298
 
 
299
########################################################################
 
300
#                       SDK Defines
 
301
########################################################################
 
302
 
 
303
ROOT_SYSROOT            ?= $(GNU_SYSROOT)
 
304
 
 
305
ifeq "$(abspath $(CELL_TOP))" "/opt/cell/sdk"
 
306
# if this is the default case - building from/into /opt/cell/sdk
 
307
#  (gotta be root, and not really recommended, since you will be
 
308
#  overwriting files that were actually installed..)
 
309
  CBE_SYSROOT           =$(GNU_SYSROOT)
 
310
else
 
311
# private sandbox build environment
 
312
# slighty different that the base case -- base/old has sysroot and sdk as
 
313
#  directories at the same level. but that doesn't allow for having multiple
 
314
#  different sandboxes. this does.
 
315
 CBE_SYSROOT            ?= $(CELL_TOP)/sysroot
 
316
endif
 
317
 
 
318
OPTDIR                   = /opt/cell/sdk
 
319
SDK_OPTDIR               = $(CBE_SYSROOT)$(OPTDIR)
 
320
 
 
321
# used for 'input/import' of the 'public' official stuff - simdmath, numa, etc
 
322
SDKBIN_spu               = $(SDK_OPTDIR)/usr/spu/bin
 
323
SDKBIN_ppu               = $(SDK_OPTDIR)/usr/bin
 
324
SDKBIN_ppu64             = $(SDK_OPTDIR)/usr/bin
 
325
 
 
326
SDKINC_spu               = $(ROOT_SYSROOT)/usr/spu/include
 
327
SDKINC_ppu               = $(ROOT_SYSROOT)/usr/include
 
328
SDKINC_ppu64             = $(ROOT_SYSROOT)/usr/include
 
329
 
 
330
SDKLIB_spu               = $(ROOT_SYSROOT)/usr/spu/lib
 
331
SDKLIB_ppu               = $(ROOT_SYSROOT)/usr/lib
 
332
SDKLIB_ppu64             = $(ROOT_SYSROOT)/usr/lib64
 
333
 
 
334
SDKBIN_host              = $(CELL_TOP)/host/bin
 
335
SDKINC_host              = $(CELL_TOP)/host/include
 
336
SDKLIB_host              = $(CELL_TOP)/host/lib
 
337
 
 
338
SDKBIN_$(HOST_PROCESSOR) = $(SDKBIN_host)
 
339
SDKINC_$(HOST_PROCESSOR) = $(SDKINC_host)
 
340
SDKLIB_$(HOST_PROCESSOR) = $(SDKLIB_host)
 
341
 
 
342
SDKBIN                   = $(SDKBIN_$(__tp__))
 
343
SDKINC                   = $(SDKINC_$(__tp__))
 
344
SDKLIB                   = $(SDKLIB_$(__tp__))
 
345
SDKRPATH                 = $(subst $(ROOT_SYSROOT),,$(SDKLIB))
 
346
 
 
347
# used for 'input/import' of the 'example' stuff - libfft, libgmath, etc
 
348
SDKEXBIN_spu             = $(SDK_OPTDIR)/usr/spu/bin
 
349
SDKEXBIN_ppu             = $(SDK_OPTDIR)/usr/bin
 
350
SDKEXBIN_ppu64           = $(SDK_OPTDIR)/usr/bin
 
351
 
 
352
SDKEXINC_spu             = $(SDK_OPTDIR)/usr/spu/include
 
353
SDKEXINC_ppu             = $(SDK_OPTDIR)/usr/include
 
354
SDKEXINC_ppu64           = $(SDK_OPTDIR)/usr/include
 
355
 
 
356
SDKEXLIB_spu             = $(SDK_OPTDIR)/usr/spu/lib
 
357
SDKEXLIB_ppu             = $(SDK_OPTDIR)/usr/lib
 
358
SDKEXLIB_ppu64           = $(SDK_OPTDIR)/usr/lib64
 
359
 
 
360
SDKEXBIN_host            = $(CELL_TOP)/host/bin
 
361
SDKEXINC_host            = $(CELL_TOP)/host/include
 
362
SDKEXLIB_host            = $(CELL_TOP)/host/lib
 
363
SDKEXBIN_$(HOST_PROCESSOR) = $(SDKEXBIN_host)
 
364
SDKEXINC_$(HOST_PROCESSOR) = $(SDKEXINC_host)
 
365
SDKEXLIB_$(HOST_PROCESSOR) = $(SDKEXLIB_host)
 
366
 
 
367
SDKEXBIN                 = $(SDKEXBIN_$(__tp__))
 
368
SDKEXINC                 = $(SDKEXINC_$(__tp__))
 
369
SDKEXLIB                 = $(SDKEXLIB_$(__tp__))
 
370
SDKEXRPATH               = $(subst $(CBE_SYSROOT),,$(SDKEXLIB))
 
371
 
 
372
# used for 'input/import' of the 'prototype' stuff
 
373
PROTDIR                  = /opt/cell/sdk/prototype
 
374
SDK_PROTDIR              = $(CBE_SYSROOT)$(PROTDIR)
 
375
 
 
376
SDKPRBIN_spu             = $(SDK_PROTDIR)/usr/spu/bin
 
377
SDKPRBIN_ppu             = $(SDK_PROTDIR)/usr/bin
 
378
SDKPRBIN_ppu64           = $(SDK_PROTDIR)/usr/bin
 
379
 
 
380
SDKPRINC_spu             = $(SDK_PROTDIR)/usr/spu/include
 
381
SDKPRINC_ppu             = $(SDK_PROTDIR)/usr/include
 
382
SDKPRINC_ppu64           = $(SDK_PROTDIR)/usr/include
 
383
 
 
384
SDKPRLIB_spu             = $(SDK_PROTDIR)/usr/spu/lib
 
385
SDKPRLIB_ppu             = $(SDK_PROTDIR)/usr/lib
 
386
SDKPRLIB_ppu64           = $(SDK_PROTDIR)/usr/lib64
 
387
 
 
388
SDKPRBIN_host            = $(CELL_TOP)/host/bin
 
389
SDKPRINC_host            = $(CELL_TOP)/host/include
 
390
SDKPRLIB_host            = $(CELL_TOP)/host/lib
 
391
SDKPRBIN_$(HOST_PROCESSOR) = $(SDKPRBIN_host)
 
392
SDKPRINC_$(HOST_PROCESSOR) = $(SDKPRINC_host)
 
393
SDKPRLIB_$(HOST_PROCESSOR) = $(SDKPRLIB_host)
 
394
 
 
395
SDKPRBIN                 = $(SDKPRBIN_$(__tp__))
 
396
SDKPRINC                 = $(SDKPRINC_$(__tp__))
 
397
SDKPRLIB                 = $(SDKPRLIB_$(__tp__))
 
398
SDKPRRPATH               = $(subst $(CBE_SYSROOT),,$(SDKPRLIB))
 
399
 
 
400
# used for build targets for examples, demos, libs
 
401
ifeq "$(abspath $(CELL_TOP))" "/opt/cell/sdk"
 
402
# if this is the default case - building from/into /opt/cell/sdk
 
403
#  (gotta be root, and not really recommended, since you will be
 
404
#  overwriting files that were actually installed..)
 
405
  EXP_SYSROOT           ?= $(GNU_SYSROOT)
 
406
else
 
407
# private sandbox build environment
 
408
# slighty different that the base case -- base/old has sysroot and sdk as
 
409
#  directories at the same level. but that doesn't allow for having multiple
 
410
#  different sandboxes. this does.
 
411
 EXP_SYSROOT            ?= $(CELL_TOP)/sysroot
 
412
endif
 
413
 
 
414
EXP_SDK_OPTDIR           = $(EXP_SYSROOT)$(OPTDIR)
 
415
 
 
416
EXP_SDKBIN_spu           = $(EXP_SDK_OPTDIR)/usr/spu/bin
 
417
EXP_SDKBIN_ppu           = $(EXP_SDK_OPTDIR)/usr/bin
 
418
EXP_SDKBIN_ppu64         = $(EXP_SDK_OPTDIR)/usr/bin
 
419
 
 
420
EXP_SDKINC_spu           = $(EXP_SDK_OPTDIR)/usr/spu/include
 
421
EXP_SDKINC_ppu           = $(EXP_SDK_OPTDIR)/usr/include
 
422
EXP_SDKINC_ppu64         = $(EXP_SDK_OPTDIR)/usr/include
 
423
 
 
424
EXP_SDKLIB_spu           = $(EXP_SDK_OPTDIR)/usr/spu/lib
 
425
EXP_SDKLIB_ppu           = $(EXP_SDK_OPTDIR)/usr/lib
 
426
EXP_SDKLIB_ppu64         = $(EXP_SDK_OPTDIR)/usr/lib64
 
427
 
 
428
EXP_SDKBIN_host         = $(EXP_SYSROOT)/host/bin
 
429
EXP_SDKINC_host         = $(EXP_SYSROOT)/host/include
 
430
EXP_SDKLIB_host         = $(EXP_SYSROOT)/host/lib
 
431
 
 
432
EXP_SDKBIN_$(HOST_PROCESSOR)    = $(EXP_SDKBIN_host)
 
433
EXP_SDKINC_$(HOST_PROCESSOR)    = $(EXP_SDKINC_host)
 
434
EXP_SDKLIB_$(HOST_PROCESSOR)    = $(EXP_SDKLIB_host)
 
435
 
 
436
EXP_SDKBIN                       = $(EXP_SDKBIN_$(__tp__))
 
437
EXP_SDKINC                       = $(EXP_SDKINC_$(__tp__))
 
438
EXP_SDKLIB                       = $(EXP_SDKLIB_$(__tp__))
 
439
 
 
440
# where prototype stuff ships
 
441
EXP_SDKPRBIN_spu         = $(EXP_SDK_OPTDIR)/prototype/usr/spu/bin
 
442
EXP_SDKPRBIN_ppu         = $(EXP_SDK_OPTDIR)/prototype/usr/bin
 
443
EXP_SDKPRBIN_ppu64       = $(EXP_SDK_OPTDIR)/prototype/usr/bin
 
444
 
 
445
EXP_SDKPRINC_spu         = $(EXP_SDK_OPTDIR)/prototype/usr/spu/include
 
446
EXP_SDKPRINC_ppu         = $(EXP_SDK_OPTDIR)/prototype/usr/include
 
447
EXP_SDKPRINC_ppu64       = $(EXP_SDK_OPTDIR)/prototype/usr/include
 
448
 
 
449
EXP_SDKPRLIB_spu         = $(EXP_SDK_OPTDIR)/prototype/usr/spu/lib
 
450
EXP_SDKPRLIB_ppu         = $(EXP_SDK_OPTDIR)/prototype/usr/lib
 
451
EXP_SDKPRLIB_ppu64       = $(EXP_SDK_OPTDIR)/prototype/usr/lib64
 
452
 
 
453
EXP_SDKPRBIN             = $(EXP_SDKPRBIN_$(__tp__))
 
454
EXP_SDKPRINC             = $(EXP_SDKPRINC_$(__tp__))
 
455
EXP_SDKPRLIB             = $(EXP_SDKPRLIB_$(__tp__))
 
456
 
 
457
########################################################################
 
458
#                       Export Defines
 
459
########################################################################
 
460
 
 
461
#  The absolute base to place built files in
 
462
#
 
463
BUILD_ROOT      ?= $(CELL_TOP)
 
464
 
 
465
#  The directory to create the "export" directory in.
 
466
#  This value defaults to BUILD_ROOT unless overridden by the
 
467
#  user.
 
468
#
 
469
EXPORT_ROOT     ?= $(BUILD_ROOT)
 
470
 
 
471
#  Base directories files are "exported" to:
 
472
#
 
473
EXPTOP          := $(EXPORT_ROOT)/export
 
474
EXPTOP_spu      := $(EXPTOP)/cell/usr/spu
 
475
EXPTOP_ppu      := $(EXPTOP)/cell
 
476
EXPTOP_ppu64    := $(EXPTOP)/cell
 
477
EXPTOP_x86_64   := $(EXPTOP)/x86_64
 
478
EXPTOP_common   := $(EXPTOP)/common
 
479
 
 
480
#  Locations of exported libraries:
 
481
#
 
482
EXPLIB_spu      := $(EXPTOP_spu)/lib
 
483
EXPLIB_ppu      := $(EXPTOP_ppu)/usr/lib
 
484
EXPLIB_ppu64    := $(EXPTOP_ppu64)/usr/lib64
 
485
EXPLIB_x86_64   := $(EXPTOP_x86_64)/usr/lib64
 
486
 
 
487
#  Locations of exported include files:
 
488
#
 
489
EXPINC_spu      := $(EXPTOP_spu)/include
 
490
EXPINC_ppu      := $(EXPTOP_ppu)/usr/include
 
491
EXPINC_ppu64    := $(EXPTOP_ppu64)/usr/include
 
492
EXPINC_x86_64   := $(EXPTOP_x86_64)/usr/include
 
493
EXPINC_common   := $(EXPTOP_common)/usr/include
 
494
 
 
495
TEST_ROOT       := $(EXPORT_ROOT)/tests
 
496
 
 
497
#  Locations of exported executables:
 
498
#
 
499
EXPBIN_spu      := $(EXPTOP_spu)/bin
 
500
EXPBIN_ppu      := $(EXPTOP_ppu)/usr/bin
 
501
EXPBIN_ppu64    := $(EXPTOP_ppu64)/usr/bin64
 
502
EXPBIN_x86_64   := $(EXPTOP_x86_64)/usr/bin64
 
503
 
 
504
 
 
505
########################################################################
 
506
#                       Targets
 
507
########################################################################
 
508
 
 
509
.PHONY: all dirs libraries programs misc_ install clean
 
510
 
 
511
dirs:      $(GNU_DIRS) $(DIRS)
 
512
programs:  $(PROGRAM) $(PROGRAMS)
 
513
libraries: $(LIBRARY)         $(SHARED_LIBRARY)         \
 
514
           $(LIBRARY_embed)   $(SHARED_LIBRARY_embed)   \
 
515
           $(LIBRARY_embed64) $(SHARED_LIBRARY_embed64)
 
516
misc_:     $(OBJS_ONLY) $(HEADERS_ONLY) $(CONFIG_LOG) $(OTHER_TARGETS)
 
517
 
 
518
TARGETS         = $(PROGRAM)         $(PROGRAMS)                \
 
519
                  $(LIBRARY)         $(SHARED_LIBRARY)          \
 
520
                  $(LIBRARY_embed)   $(SHARED_LIBRARY_embed)    \
 
521
                  $(LIBRARY_embed64) $(SHARED_LIBRARY_embed64)  \
 
522
                  $(OBJS_ONLY) $(HEADERS_ONLY) $(CONFIG_LOG) $(OTHER_TARGETS)
 
523
                  
 
524
LOCAL_TARGETS   = $(_PROGRAM)         $(_PROGRAMS)              \
 
525
                  $(_LIBRARY)         $(_SHARED_LIBRARY)        \
 
526
                  $(_LIBRARY_embed)   $(_SHARED_LIBRARY_embed)  \
 
527
                  $(_LIBRARY_embed64) $(_SHARED_LIBRARY_embed64) \
 
528
                  $(_SHARED_LIBRARY_SONAME) $(_SHARED_LIBRARY_BASENAME)
 
529
 
 
530
 
 
531
########################################################################
 
532
#                       Compilers
 
533
########################################################################
 
534
 
 
535
#################
 
536
# HOST Compiler
 
537
#################
 
538
 
 
539
 
 
540
ifdef __host__
 
541
  ifeq "$(HOST_COMPILER)" "local"
 
542
    TOOL_BINDIR         = /usr/bin
 
543
  endif
 
544
 
 
545
  TOOL_PREFIX           =
 
546
  PATH                  := $(TOOL_BINDIR):$(SDKBIN_host):$(PATH)
 
547
 
 
548
  ifeq "$(CC)" "cc"
 
549
    CC                  := $(CCACHE) $(TOOL_BINDIR)/gcc
 
550
    CXX                 := $(CCACHE) $(TOOL_BINDIR)/g++
 
551
  endif
 
552
endif
 
553
 
 
554
 
 
555
#################
 
556
# SPU Compiler
 
557
#################
 
558
 
 
559
ifdef __spu__
 
560
  TOOL_BINDIR           = $(SPU_BINDIR)
 
561
  TOOL_PREFIX           = $(SPU_TOOL_PREFIX)
 
562
  PATH                  := $(TOOL_BINDIR):$(PATH)
 
563
 
 
564
  ifeq "$(SPU_COMPILER)" "spuxlc"
 
565
    SPU_COMPILER        := xlc
 
566
  endif
 
567
 
 
568
  ifeq "$(SPU_COMPILER)" "xlc"
 
569
 
 
570
    _XLC_VERSIONS       := $(XLC_VERSION)
 
571
    _USING_XLC          := 1
 
572
 
 
573
  else
 
574
 
 
575
    CC                  := $(CCACHE) $(TOOL_BINDIR)/$(TOOL_PREFIX)gcc
 
576
    CXX                 := $(CCACHE) $(TOOL_BINDIR)/$(TOOL_PREFIX)g++
 
577
 
 
578
    ifeq "$(wildcard $(CC))" ""
 
579
      $(warning $(CC) not found)
 
580
    endif
 
581
 
 
582
  endif
 
583
 
 
584
  XLC_PREFIX            := spu
 
585
 
 
586
endif
 
587
 
 
588
 
 
589
#################
 
590
# PPU C Compiler
 
591
#################
 
592
 
 
593
ifdef __ppu__
 
594
  TOOL_BINDIR           = $(PPU32_BINDIR)
 
595
  TOOL_PREFIX           = $(PPU32_TOOL_PREFIX)
 
596
  PATH                  := $(TOOL_BINDIR):$(PATH)
 
597
 
 
598
  ifeq "$(PPU32_COMPILER)" "ppuxlc"
 
599
    PPU32_COMPILER      := xlc
 
600
  endif
 
601
 
 
602
  ifeq "$(PPU32_COMPILER)" "xlc"
 
603
    _XLC_VERSIONS       := $(XLC_VERSION)
 
604
    _USING_XLC          := 1
 
605
 
 
606
    # xlc will get CC and CXX later
 
607
  else
 
608
    CC   := $(CCACHE) $(TOOL_BINDIR)/$(PPU32_PREFIX)gcc
 
609
    CXX  := $(CCACHE) $(TOOL_BINDIR)/$(PPU32_PREFIX)g++
 
610
 
 
611
    ifeq "$(wildcard $(CC))" ""
 
612
      $(warning $(CC) not found)
 
613
    endif
 
614
 
 
615
    CPPFLAGS_gcc        += -m32 
 
616
 
 
617
    ifeq "$(SYSTEMSIM_STANDALONE)" "1"
 
618
      _INCLUDE     += -I $(SYSTEMSIM_TOP)/include
 
619
    endif
 
620
  endif
 
621
 
 
622
  XLC_PREFIX            := ppu
 
623
endif
 
624
 
 
625
 
 
626
###################
 
627
# PPU64 C Compiler
 
628
###################
 
629
 
 
630
ifdef __ppu64__
 
631
  TOOL_BINDIR           = $(PPU64_BINDIR)
 
632
  TOOL_PREFIX           = $(PPU_TOOL_PREFIX)
 
633
  PATH                  := $(TOOL_BINDIR):$(PATH)
 
634
 
 
635
  ifeq "$(PPU64_COMPILER)" "xlc"
 
636
    _XLC_VERSIONS       := $(XLC_VERSION)
 
637
    _USING_XLC          := 1
 
638
    CPPFLAGS_xlc        += -q64
 
639
 
 
640
    # xlc will get CC and CXX later
 
641
  else
 
642
    CC  := $(CCACHE) $(TOOL_BINDIR)/$(PPU_PREFIX)gcc
 
643
    CXX := $(CCACHE) $(TOOL_BINDIR)/$(PPU_PREFIX)g++
 
644
 
 
645
    ifeq "$(wildcard $(CC))" ""
 
646
      $(warning $(CC) not found)
 
647
    endif
 
648
 
 
649
  endif
 
650
 
 
651
  PATH  := $(TOOL_BINDIR):$(PATH)
 
652
  XLC_PREFIX            := ppu
 
653
endif
 
654
 
 
655
 
 
656
#################
 
657
# XLC C Compiler
 
658
#################
 
659
 
 
660
ifdef _USING_XLC
 
661
  _USING_XL             := 1
 
662
  ifndef XLC_INSTALL_DIR
 
663
    # check for xlc in the order specified
 
664
    find_xlc = $(shell for i in $(1); do if [ -e $$i/bin/$(2)xlc ]; then echo "$$i"; exit; elif [ -e $$i/ship/bin/$(2)xlc ]; then echo "$$i/ship"; exit; fi; done)
 
665
 
 
666
    _XLC_VERSIONS       := $(subst xlc/,/opt/ibmcmp/xlc/,$(_XLC_VERSIONS))  \
 
667
                           $(subst xlc/,$(USR_LOCAL)/xlc/,$(_XLC_VERSIONS))
 
668
 
 
669
    XLC_INSTALL_DIR := $(call find_xlc,$(_XLC_VERSIONS),$(XLC_PREFIX))
 
670
    export XLC_INSTALL_DIR
 
671
  endif
 
672
 
 
673
  ifeq "$(XLC_INSTALL_DIR)" ""
 
674
    $(error Error: No $(XLC_PREFIX)xlc found.  $(CELL_TOP)/buildutils/make.env specified these choices: $(addsuffix /bin/$(XLC_PREFIX)xlc,$(_XLC_VERSIONS)))
 
675
  else
 
676
    CC          := $(XLC_INSTALL_DIR)/bin/$(XLC_PREFIX)xlc
 
677
    CXX         := $(XLC_INSTALL_DIR)/bin/$(XLC_PREFIX)xlc++
 
678
    PATH        := $(XLC_INSTALL_DIR)/bin:$(PATH)
 
679
  endif
 
680
endif
 
681
 
 
682
#########################
 
683
#  Fortran HOST Compiler
 
684
#########################
 
685
 
 
686
ifdef __host__
 
687
 
 
688
  ifeq "$(HOST_COMPILER)" "local"
 
689
    FTN_TOOL_BINDIR          = $(FTN_BINDIR_gfortran)
 
690
    FORTRAN                 := $(FTN_TOOL_BINDIR)/gfortran
 
691
    COMMON_FFLAGS           += --fixed-line-length-0
 
692
    _FFLAGS                 = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
693
  endif
 
694
 
 
695
  PATH                  := $(FTN_TOOL_BINDIR):$(PATH)
 
696
 
 
697
  #ifeq "$(wildcard $(FORTRAN))" ""
 
698
  #    $(warning $(FORTRAN) not found)
 
699
  #endif
 
700
endif
 
701
 
 
702
#########################
 
703
#  Fortran SPU Compiler
 
704
#########################
 
705
 
 
706
ifdef __spu__
 
707
 
 
708
  ifeq "$(FTN_SPU_COMPILER)" "spuxlf"
 
709
    FTN_SPU_COMPILER        := xlf
 
710
  endif
 
711
 
 
712
  ifeq "$(FTN_SPU_COMPILER)" "xlf"
 
713
    FTN_TOOL_BINDIR     = $(FTN_SPU_BINDIR_xlf)
 
714
    _XLF_VERSIONS       := $(XLF_VERSION)
 
715
    _USING_XLF          := 1
 
716
    COMMON_FFLAGS       += -qextname
 
717
    _FFLAGS              = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
718
 
 
719
  else
 
720
   ifeq "$(FTN_SPU_COMPILER)" "gfortran"
 
721
 
 
722
    FORTRAN             := $(TOOL_BINDIR)/$(SPU_TOOL_PREFIX)gfortran
 
723
    COMMON_FFLAGS       += --fixed-line-length-0
 
724
    _FFLAGS              = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
725
 
 
726
    #ifeq "$(wildcard $(FORTRAN))" ""
 
727
    #  $(warning $(FORTRAN) not found)
 
728
    #endif
 
729
   endif
 
730
  endif
 
731
 
 
732
  PATH                  := $(FTN_TOOL_BINDIR):$(PATH)
 
733
 
 
734
  XLF_PREFIX  := spu
 
735
endif
 
736
 
 
737
########################
 
738
#  Fortran PPU Compiler
 
739
########################
 
740
 
 
741
ifdef __ppu__
 
742
 
 
743
  PATH                  := $(FTN_TOOL_BINDIR):$(PATH)
 
744
 
 
745
  ifeq "$(FTN_PPU32_COMPILER)" "ppuxlf"
 
746
    FTN_PPU32_COMPILER        := xlf
 
747
  endif
 
748
 
 
749
  ifeq "$(FTN_PPU32_COMPILER)" "xlf"
 
750
    FTN_TOOL_BINDIR          = $(FTN_PPU_BINDIR_xlf)
 
751
 
 
752
    _XLF_VERSIONS       := $(XLF_VERSION)
 
753
    _USING_XLF          := 1
 
754
    COMMON_FFLAGS           += -qextname -q32
 
755
    _FFLAGS                  = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
756
  else
 
757
   ifeq "$(FTN_PPU32_COMPILER)" "gfortran"
 
758
    FORTRAN                  := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)gfortran
 
759
    COMMON_FFLAGS            += --fixed-line-length-0 -m32
 
760
    _FFLAGS                   = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
761
 
 
762
    #ifeq "$(wildcard $(FORTRAN))" ""
 
763
    #  $(warning $(FORTRAN) not found on this machine)
 
764
    #endif
 
765
   endif
 
766
  endif
 
767
 
 
768
  XLF_PREFIX  := ppu
 
769
endif
 
770
 
 
771
##########################
 
772
#  Fortran PPU64 Compiler
 
773
##########################
 
774
 
 
775
ifdef __ppu64__
 
776
 
 
777
  PATH                  := $(FTN_TOOL_BINDIR):$(PATH)
 
778
 
 
779
  ifeq "$(FTN_PPU64_COMPILER)" "ppuxlf"
 
780
    FTN_PPU64_COMPILER        := xlf
 
781
  endif
 
782
 
 
783
  ifeq "$(FTN_PPU64_COMPILER)" "xlf"
 
784
    FTN_TOOL_BINDIR          = $(FTN_PPU_BINDIR_xlf)
 
785
    _XLF_VERSIONS := $(XLF_VERSION)
 
786
    _USING_XLF                  := 1
 
787
    COMMON_FFLAGS            += -qextname -q64
 
788
    _FFLAGS                   = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
789
  else
 
790
   ifeq "$(FTN_PPU64_COMPILER)" "gfortran"
 
791
    FORTRAN                  := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)gfortran
 
792
    COMMON_FFLAGS            += --fixed-line-length-0 -m64
 
793
    _FFLAGS                   = $(COMMON_FFLAGS) $(FFLAGS) $(INCLUDE)
 
794
 
 
795
    #ifeq "$(wildcard $(FORTRAN))" ""
 
796
    #  $(warning $(FORTRAN) not found on this machine)
 
797
    #endif
 
798
   endif
 
799
  endif
 
800
 
 
801
  XLF_PREFIX  := ppu
 
802
endif
 
803
 
 
804
#################
 
805
# XLF Compiler
 
806
#################
 
807
 
 
808
ifdef _USING_XLF
 
809
  _USING_XL                     := 1
 
810
  ifndef XLF_INSTALL_DIR
 
811
    # check for xlf in the order specified
 
812
    find_xlf = $(shell for i in $(1); do if [ -e $$i/bin/$(2)xlf ]; then echo "$$i"; exit; elif [ -e $$i/ship/bin/$(2)xlf ]; then echo "$$i/ship"; exit; fi; done)
 
813
 
 
814
    _XLF_VERSIONS := $(subst xlf/,/opt/ibmcmp/xlf/,$(_XLF_VERSIONS))  \
 
815
         $(subst xlf/,$(USR_LOCAL)/xlf/,$(_XLF_VERSIONS))
 
816
 
 
817
    XLF_INSTALL_DIR := $(call find_xlf,$(_XLF_VERSIONS),$(XLF_PREFIX))
 
818
    export XLF_INSTALL_DIR
 
819
  endif
 
820
 
 
821
  ifeq "$(XLF_INSTALL_DIR)" ""
 
822
    $(error Error: No $(XLF_PREFIX)xlf found.  $(CELL_TOP)/buildutils/make.env specified these choices: $(addsuffix /bin/$(XLF_PREFIX)xlf,$(_XLF_VERSIONS)))
 
823
  else
 
824
    FORTRAN  := $(XLF_INSTALL_DIR)/bin/$(XLF_PREFIX)xlf
 
825
    PATH := $(XLF_INSTALL_DIR)/bin:$(PATH)
 
826
  endif
 
827
endif
 
828
 
 
829
########################################################################
 
830
#                       Other Tools
 
831
########################################################################
 
832
 
 
833
PATH     := .:$(PATH)
 
834
 
 
835
AS       := $(TOOL_BINDIR)/$(TOOL_PREFIX)as
 
836
LD       := $(TOOL_BINDIR)/$(TOOL_PREFIX)ld
 
837
 
 
838
SPU_AR   := $(GNU_SPU_BINDIR)/$(SPU_TOOL_PREFIX)ar
 
839
PPU_AR   := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)ar
 
840
HOST_AR  := $(TOOL_BINDIR)/ar
 
841
 
 
842
ifdef __spu__
 
843
  AR     := $(SPU_AR)
 
844
else
 
845
  ifdef __ppu__
 
846
    AR          := $(PPU_AR)
 
847
  else
 
848
    ifdef __ppu64__
 
849
      AR        := $(PPU_AR)
 
850
    else
 
851
      # host
 
852
      AR        := $(HOST_AR)
 
853
    endif
 
854
  endif
 
855
endif
 
856
 
 
857
EMBEDSPU32 := $(GNU_PPU_BINDIR)/ppu-embedspu -m32
 
858
EMBEDSPU64 := $(GNU_PPU_BINDIR)/ppu-embedspu -m64
 
859
 
 
860
ifdef __ppu3264__
 
861
 # these is only 1 version of these - ppu (not ppu32 and ppu)
 
862
 OBJCOPY         := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)objcopy
 
863
 OBJDUMP         := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)objdump
 
864
 RANLIB          := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)ranlib
 
865
 READELF         := $(TOOL_BINDIR)/$(PPU_TOOL_PREFIX)readelf
 
866
else
 
867
 OBJCOPY         := $(TOOL_BINDIR)/$(TOOL_PREFIX)objcopy
 
868
 OBJDUMP         := $(TOOL_BINDIR)/$(TOOL_PREFIX)objdump
 
869
 RANLIB          := $(TOOL_BINDIR)/$(TOOL_PREFIX)ranlib
 
870
 READELF         := $(TOOL_BINDIR)/$(TOOL_PREFIX)readelf
 
871
endif
 
872
 
 
873
AWK      := awk
 
874
CP       := cp -pfP
 
875
FLEX     := flex
 
876
GZIP     := gzip -f
 
877
INDENT   := indent -bad -bap -bbb -bli0 -cli4 -i4 -l80 -nip -pcs -psl -sob
 
878
MKDIR    := mkdir -p
 
879
MV       := mv
 
880
PERL     := perl
 
881
RM       := rm -f
 
882
SED      := sed
 
883
SORT     := sort
 
884
TAR      := tar
 
885
TAR_GZIP := $(TAR) -z
 
886
TAR_BZIP := $(TAR) -j
 
887
YACC     := yacc
 
888
 
 
889
REMOVE_EMPTY_DIRECTORY := rmdir -p --ignore-fail-on-non-empty
 
890
 
 
891
 
 
892
# Default to allowing a .i file to be compiled (i.e. #line are not added).
 
893
# If you want to see the files that the code comes from (i.e. add the #line)
 
894
# then set this value to 0
 
895
#
 
896
WANT_TO_COMPILE_I_FILE  ?= 1
 
897
 
 
898
 
 
899
########################################################################
 
900
#                       VPATH
 
901
########################################################################
 
902
 
 
903
empty           :=
 
904
space           := $(empty) $(empty)
 
905
 
 
906
_VPATH          := $(subst $(space),:,$(strip $(VPATH)))
 
907
VPATH           := $(_VPATH)
 
908
 
 
909
 
 
910
########################################################################
 
911
#                       Include Directories
 
912
########################################################################
 
913
 
 
914
_INCLUDE        := -I.
 
915
 
 
916
ifdef VPATH
 
917
  _INCLUDE      += -I $(subst :, -I ,$(VPATH))
 
918
endif
 
919
 
 
920
_INCLUDE        += $(INCLUDE)
 
921
 
 
922
ifdef __x86__
 
923
  # Nvidia has updated OpenGL files -- use those if installed
 
924
  NVIDIA_INCLUDE := $(wildcard /usr/share/doc/NVIDIA_GLX-1.0/include)
 
925
  ifneq "$(NVIDIA_INCLUDE)" ""
 
926
    _INCLUDE    += -I $(NVIDIA_INCLUDE)
 
927
  endif
 
928
endif
 
929
 
 
930
# don't include this if its one of the standard locations
 
931
ifneq "$(ROOT_SYSROOT)" "$(GNU_SYSROOT)"
 
932
  _INCLUDE      += -I $(SDKINC)
 
933
endif
 
934
 
 
935
_INCLUDE        += -I $(SDKEXINC)
 
936
 
 
937
PREV_DIR_1      = $(dir $(CURDIR))
 
938
PREV_DIR_2      = $(dir $(PREV_DIR_1:%/=%))
 
939
 
 
940
 
 
941
########################################################################
 
942
#                       Preprocessor Flags
 
943
########################################################################
 
944
ifeq "$(SYSTEMSIM_STANDALONE)" "1"
 
945
  TEXT_ADDRESS ?= 0x1000
 
946
endif
 
947
 
 
948
 
 
949
 
 
950
ifdef _USING_XLC
 
951
  #----------------------------------
 
952
  # XLC-Specific Preprocessor Flags
 
953
  #----------------------------------
 
954
  # CPPFLAGS_xlc                - User-defined in Makefile for xlc only
 
955
  # -qcpluscmt                  - Allow // as a comment
 
956
  # -M                          - Create a dependency file while compiling
 
957
  # -ma                         - Generate inline calls to the "alloca" function
 
958
 
 
959
  COMPILER_CPPFLAGS      = $(CPPFLAGS_xlc)              \
 
960
                           -qcpluscmt -M -ma
 
961
  C_COMPILER_LDFLAGS     = $(LDFLAGS_xlc)
 
962
 
 
963
  ifdef __ppu3264__
 
964
    VECTOR_FLAG          = -qaltivec -qenablevmx
 
965
  
 
966
    ifeq "$(SYSTEMSIM_STANDALONE)" "1"
 
967
      STANDALONE_LDFLAGS          += -qnocrt -qstaticlink -Wl,-Ttext=$(TEXT_ADDRESS)
 
968
    endif
 
969
 
 
970
  endif
 
971
  ifdef __ppu__
 
972
    C_COMPILER_LDFLAGS  += -Wl,-m,elf32ppc
 
973
  endif
 
974
  ifdef __ppu64__
 
975
    C_COMPILER_LDFLAGS  += -q64 -Wl,-m,elf64ppc
 
976
  endif
 
977
else
 
978
  #----------------------------------
 
979
  # GCC-Specific Preprocessor Flags
 
980
  #----------------------------------
 
981
  # CPPFLAGS_gcc                - User-defined in Makefile for gcc only
 
982
  # -W                          - Enable extra warnings
 
983
  # -Wall                       - Enable all preprocessor warnings
 
984
  # -Winline                    - Warn when inlined function cannot be inlined
 
985
 
 
986
  COMPILER_CPPFLAGS      = $(CPPFLAGS_gcc)
 
987
  C_COMPILER_LDFLAGS     = $(LDFLAGS_gcc)
 
988
  WARNING_FLAGS         ?= -W -Wall -Winline
 
989
 
 
990
  ifdef __ppu3264__
 
991
    VECTOR_FLAG         = -mabi=altivec -maltivec
 
992
    
 
993
    ifeq "$(SYSTEMSIM_STANDALONE)" "1"
 
994
      C_COMPILER_LDFLAGS          += -nostartfiles -static -Wl,-Ttext=$(TEXT_ADDRESS)
 
995
    endif
 
996
  endif
 
997
  ifdef __ppu__
 
998
    C_COMPILER_LDFLAGS  += -m32 -Wl,-m,elf32ppc
 
999
  endif
 
1000
endif
 
1001
 
 
1002
COMMON_CPPFLAGS = $(NO_STDINC)          \
 
1003
                  $(USE_VPATH)          \
 
1004
                  $(WARNING_FLAGS)      \
 
1005
                  $(COMPILER_CPPFLAGS)
 
1006
 
 
1007
_SPPFLAGS       = $(CPPFLAGS_$(@:.o=))  \
 
1008
                  $(CPPFLAGS_$(@:.s=))  \
 
1009
                  $(CPPFLAGS_$(@:.i=))  \
 
1010
                  $(CPPFLAGS_$(@:.d=))  \
 
1011
                  $(CPPFLAGS)           \
 
1012
                  $(COMMON_CPPFLAGS)    \
 
1013
                  $(_INCLUDE)
 
1014
 
 
1015
_CPPFLAGS       = $(_SPPFLAGS)          \
 
1016
                  $(VECTOR_FLAG)
 
1017
 
 
1018
########################################################################
 
1019
#                       Compiler Flags
 
1020
########################################################################
 
1021
 
 
1022
 
 
1023
ifdef _USING_XLC
 
1024
  COMPILER_CFLAGS        = $(CFLAGS_xlc)
 
1025
  CFLAGS_so             ?= -qpic
 
1026
  NOSTARTFILES          := -qnocrt
 
1027
  NOSTDLIB              := -qnolib
 
1028
 
 
1029
  ifdef __spu__
 
1030
    CC_OPT_LEVEL_DEBUG  := -g -qnoopt
 
1031
  endif
 
1032
else
 
1033
  COMPILER_CFLAGS       := $(CFLAGS_gcc)
 
1034
  CFLAGS_so             ?= -fpic
 
1035
  NOSTARTFILES          := -nostartfiles
 
1036
  NOSTDLIB              := -nostdlib
 
1037
endif
 
1038
 
 
1039
ifdef _SHARED_LIBRARY
 
1040
  COMPILER_CFLAGS       += $(CFLAGS_so)
 
1041
endif
 
1042
 
 
1043
ifndef CC_OPT_LEVEL_DEBUG
 
1044
  CC_OPT_LEVEL_DEBUG    := -g -O0
 
1045
endif
 
1046
 
 
1047
ifndef CC_OPT_LEVEL
 
1048
  ifdef _USING_XLC
 
1049
   CC_OPT_LEVEL         := -O3
 
1050
  else
 
1051
   CC_OPT_LEVEL         := -O3
 
1052
  endif         
 
1053
endif
 
1054
 
 
1055
COMMON_CFLAGS   := $(CC_OPT_LEVEL) $(COMPILER_CFLAGS)
 
1056
 
 
1057
_CFLAGS_         = $(CFLAGS_$(@:.o=))   \
 
1058
                   $(CFLAGS)            \
 
1059
                   $(COMMON_CFLAGS)
 
1060
 
 
1061
ifdef _USING_XLC
 
1062
  _CFLAGS        = $(_CFLAGS_:-fno-inline=-qnoinline)
 
1063
else
 
1064
  _CFLAGS        = $(_CFLAGS_:-qnoinline=-fno-inline)
 
1065
endif
 
1066
 
 
1067
COMMON_CXXFLAGS := $(CC_OPT_LEVEL) $(COMPILER_CFLAGS)
 
1068
 
 
1069
_CXXFLAGS_       = $(CXXFLAGS_$(@:.o=)) \
 
1070
                   $(CXXFLAGS)          \
 
1071
                   $(COMMON_CXXFLAGS)
 
1072
 
 
1073
ifdef _USING_XLC
 
1074
  _CXXFLAGS      = $(_CXXFLAGS_:-fno-inline=-qnoinline)
 
1075
else
 
1076
  _CXXFLAGS      = $(_CXXFLAGS_:-qnoinline=-fno-inline)
 
1077
endif
 
1078
 
 
1079
ifdef __spu__
 
1080
  ifndef _USING_XLC
 
1081
    _CXXFLAGS   += -fno-exceptions -fno-rtti
 
1082
  endif
 
1083
endif
 
1084
 
 
1085
 
 
1086
########################################################################
 
1087
#                       Assembly Flags
 
1088
########################################################################
 
1089
 
 
1090
COMMON_ASFLAGS  = 
 
1091
 
 
1092
ifdef __ppu__
 
1093
  ifeq "$(PPU32_COMPILER)" "cell"
 
1094
    COMMON_ASFLAGS      += -a32
 
1095
  endif
 
1096
endif
 
1097
 
 
1098
_ASFLAGS        = $(ASFLAGS_$(@:.o=))   \
 
1099
                  $(ASFLAGS)            \
 
1100
                  $(COMMON_ASFLAGS)     \
 
1101
                  $(_INCLUDE)
 
1102
 
 
1103
 
 
1104
########################################################################
 
1105
#                       Imported Libraries
 
1106
########################################################################
 
1107
 
 
1108
ifdef IMPORTS
 
1109
  _IMPORTS      := $(filter-out -l%,$(IMPORTS))
 
1110
  SYS_LIBS      += $(filter -l%,$(IMPORTS))
 
1111
endif
 
1112
 
 
1113
ifdef _PROGRAMS
 
1114
  # This is in addition to IMPORTS, which applies to all PROGRAMS
 
1115
  PER_FILE_IMPORTS   := $(foreach prog,$(_PROGRAMS),$(IMPORTS_$(prog)))
 
1116
  _PER_FILE_IMPORTS  := $(filter-out -l%,$(PER_FILE_IMPORTS))
 
1117
  PER_FILE_SYS_LIBS  := $(filter -l%,$(PER_FILE_IMPORTS))
 
1118
endif
 
1119
 
 
1120
 
 
1121
########################################################################
 
1122
#                       Link Flags
 
1123
########################################################################
 
1124
 
 
1125
ifndef _USING_XLC
 
1126
  ifdef STRIP_PROGRAM
 
1127
    STRIP_FLAG          := -Wl,-s
 
1128
  endif
 
1129
 
 
1130
  ifdef MAPFILE
 
1131
    _MAP_FLAG           := -Wl,-Map,$(MAPFILE)
 
1132
  endif
 
1133
endif
 
1134
 
 
1135
ifdef _USING_XLF
 
1136
  ifdef __spu__
 
1137
    FTN_COMPILER_LDFLAGS := -L $(XLF_INSTALL_DIR)/spu/lib/ -R $(XLF_INSTALL_DIR)/spu/lib/
 
1138
  else
 
1139
    ifdef __ppc64__
 
1140
      FTN_COMPILER_LDFLAGS := -L $(XLF_INSTALL_DIR)/lib64/ -R $(XLF_INSTALL_DIR)/lib64/
 
1141
    else
 
1142
      ifdef __ppu64__
 
1143
        FTN_COMPILER_LDFLAGS := -L $(XLF_INSTALL_DIR)/lib64/ -R $(XLF_INSTALL_DIR)/lib64/
 
1144
        FTN_COMPILER_LDFLAGS    += -q64 -Wl,-m,elf64ppc
 
1145
      else
 
1146
        FTN_COMPILER_LDFLAGS := -L $(XLF_INSTALL_DIR)/lib/ -R $(XLF_INSTALL_DIR)/lib/
 
1147
        FTN_COMPILER_LDFLAGS    += -Wl,-m,elf32ppc
 
1148
      endif
 
1149
    endif
 
1150
  endif
 
1151
  FTN_COMPILER_LDFLAGS += -lxlf90
 
1152
else # gfortran
 
1153
  ifdef __ppu__
 
1154
    FTN_COMPILER_LDFLAGS        += -m32 -Wl,-m,elf32ppc
 
1155
  endif
 
1156
endif
 
1157
 
 
1158
COMMON_LDFLAGS          = $(STRIP_FLAG) $(_MAP_FLAG)
 
1159
 
 
1160
ifneq "$(SYS_LIBS)$(PER_FILE_SYS_LIBS)" ""
 
1161
 # don't include this if its one of the standard locations
 
1162
 ifneq "$(ROOT_SYSROOT)" "$(GNU_SYSROOT)"
 
1163
  COMMON_LDFLAGS        += -L$(SDKLIB_$(__tp__))
 
1164
 endif
 
1165
  COMMON_LDFLAGS        += -L$(SDKEXLIB_$(__tp__))
 
1166
  ifdef __host__
 
1167
    ifneq "$(filter -lX%,$(SYS_LIBS))" ""
 
1168
      MULTI_OS_DIR      = $(shell $(CC) -print-multi-os-directory 2>/dev/null)
 
1169
      COMMON_LDFLAGS    += -L/usr/X11R6/lib/$(MULTI_OS_DIR)
 
1170
    endif
 
1171
  endif
 
1172
endif
 
1173
 
 
1174
ifdef __spu__
 
1175
  # Until we have an SPU loader capable of performing runtime relocations
 
1176
  # as needed (feature 4758), we will collapse the text and data segments on
 
1177
  # all SPU executables by default.
 
1178
  COMMON_LDFLAGS        += -Wl,-N
 
1179
endif
 
1180
 
 
1181
ifdef START_FILE
 
1182
  COMMON_LDFLAGS        += $(NOSTARTFILES)
 
1183
endif
 
1184
 
 
1185
# fun with sonames.
 
1186
# if defined SHARED_LIBRARY_SONAME and SHARED_LIBRARY_VERSION
 
1187
#    real file is libfoo.so.#.#
 
1188
#    create ln -s libfoo.so libfoo.so.#.#
 
1189
#    create ln -s libfoo.so.# libfoo.so.#.#
 
1190
#
 
1191
# if defined SHARED_LIBRARY_VERSION ONLY
 
1192
#    real file is libfoo.so.#.#
 
1193
#    create ln -s libfoo.so libfoo.so.#.#
 
1194
#
 
1195
# if defined SHARED_LIBRARY_SONAME ONLY
 
1196
#    real file is libfoo.so.#
 
1197
#    create ln -s libfoo.so libfoo.so.#
 
1198
 
 
1199
ifdef SHARED_LIBRARY_VERSION
 
1200
#define targets for library link
 
1201
_SHARED_LIBRARY_BASENAME := $(_SHARED_LIBRARY:.so.$(SHARED_LIBRARY_VERSION)=.so)
 
1202
 
 
1203
_SHARED_LIBRARY_VERSION := $(_SHARED_LIBRARY_BASENAME).$(SHARED_LIBRARY_VERSION)
 
1204
INSTALL_FILES   += $(_SHARED_LIBRARY_BASENAME)
 
1205
$(_SHARED_LIBRARY_BASENAME): $(_SHARED_LIBRARY_SONAME)
 
1206
        ln -s $(_SHARED_LIBRARY_VERSION) $(_SHARED_LIBRARY_BASENAME)
 
1207
 
 
1208
ifdef SHARED_LIBRARY_SONAME
 
1209
# sanity check - SONAME can't be equal to VERSION
 
1210
ifeq "$(SHARED_LIBRARY_SONAME)" "$(SHARED_LIBRARY_VERSION)"
 
1211
      $(error SHARED_LIBRARY_SONAME can't be same as SHARED_LIBRARY_VERSION )
 
1212
endif
 
1213
#define targets for library link
 
1214
_SHARED_LIBRARY_SONAME  := $(_SHARED_LIBRARY_BASENAME).$(SHARED_LIBRARY_SONAME)
 
1215
INSTALL_FILES   += $(_SHARED_LIBRARY_SONAME)
 
1216
$(_SHARED_LIBRARY_SONAME): $(_SHARED_LIBRARY_BASENAME)
 
1217
        ln -s $(_SHARED_LIBRARY_VERSION) $(_SHARED_LIBRARY_SONAME)
 
1218
else
 
1219
 
 
1220
_SHARED_LIBRARY_SONAME  := $(_SHARED_LIBRARY)
 
1221
 
 
1222
endif
 
1223
 
 
1224
else
 
1225
 
 
1226
ifdef SHARED_LIBRARY_SONAME
 
1227
#define targets for library link
 
1228
_SHARED_LIBRARY_BASENAME := $(_SHARED_LIBRARY:.so.$(SHARED_LIBRARY_SONAME)=.so)
 
1229
_SHARED_LIBRARY_SONAME  := $(_SHARED_LIBRARY_BASENAME).$(SHARED_LIBRARY_SONAME)
 
1230
INSTALL_FILES   += $(_SHARED_LIBRARY_BASENAME)
 
1231
$(_SHARED_LIBRARY_BASENAME): $(_SHARED_LIBRARY_BASENAME)
 
1232
        ln -s $(_SHARED_LIBRARY_SONAME) $(_SHARED_LIBRARY_BASENAME)
 
1233
 
 
1234
else
 
1235
 
 
1236
_SHARED_LIBRARY_SONAME  := $(_SHARED_LIBRARY)
 
1237
 
 
1238
endif
 
1239
 
 
1240
endif
 
1241
 
 
1242
ifdef __spu__
 
1243
  SHARED_LDFLAGS        := -shared -soname=$(_SHARED_LIBRARY_embed)
 
1244
endif
 
1245
 
 
1246
ifdef __ppu__
 
1247
  SHARED_LDFLAGS        := -shared -soname=$(_SHARED_LIBRARY_SONAME) -m elf32ppc
 
1248
  COMMON_LDFLAGS        += -R$(SDKEXRPATH)
 
1249
endif
 
1250
 
 
1251
ifdef __ppu64__
 
1252
  SHARED_LDFLAGS        := -shared -soname=$(_SHARED_LIBRARY_SONAME) -m elf64ppc
 
1253
  COMMON_LDFLAGS        += -R$(SDKEXRPATH)
 
1254
endif
 
1255
 
 
1256
ifdef __host__
 
1257
  SHARED_LDFLAGS        := -shared -soname=$(_SHARED_LIBRARY_SONAME)
 
1258
endif
 
1259
 
 
1260
 
 
1261
_LDFLAGS        = $(LDFLAGS_$@)         \
 
1262
                  $(LDFLAGS)            \
 
1263
                  $(STANDALONE_LDFLAGS) \
 
1264
                  $(COMMON_LDFLAGS)
 
1265
 
 
1266
 
 
1267
########################################################################
 
1268
#                       Source Rules
 
1269
########################################################################
 
1270
 
 
1271
SRC_BUILT_HERE = $(C_BUILT_HERE) $(S_BUILT_HERE) $(H_BUILT_HERE) $(F_BUILT_HERE) $(CXX_BUILT_HERE)
 
1272
 
 
1273
 
 
1274
########################################################################
 
1275
#                       Object Rules
 
1276
########################################################################
 
1277
 
 
1278
ifneq "$(PROGRAM)$(LIBRARY)$(_SHARED_LIBRARY)" ""
 
1279
  ifndef OBJS
 
1280
    IMPLICIT_OBJS       := 1
 
1281
  endif
 
1282
endif
 
1283
 
 
1284
ifdef VPATH
 
1285
  all_src = $(sort $(notdir $(foreach path,. $(subst :, ,$(VPATH)),$(wildcard $(path)/*.$(1)))))
 
1286
else
 
1287
  all_src = $(wildcard *.$(1))
 
1288
endif
 
1289
 
 
1290
CXX_SRC1 = $(call all_src,C) $(CXX_BUILT_HERE)
 
1291
CXX_SRC2 = $(call all_src,cpp)
 
1292
CXX_SRC3 = $(call all_src,cc)
 
1293
CXX_SRC4 = $(call all_src,cxx)
 
1294
CXX_OBJS = $(strip $(CXX_SRC1:.C=.o)  $(CXX_SRC2:.cpp=.o) \
 
1295
                   $(CXX_SRC3:.cc=.o) $(CXX_SRC4:.cxx=.o))
 
1296
 
 
1297
FTN_SRC1 = $(call all_src,f) $(F_BUILT_HERE)
 
1298
FTN_SRC2 = $(call all_src,f90)
 
1299
FTN_OBJS = $(strip $(FTN_SRC1:.f=.o)  $(FTN_SRC2:.f90=.o))
 
1300
 
 
1301
ifdef IMPLICIT_OBJS
 
1302
  # if no OBJS specified, assume what they are
 
1303
  # For a single programs, assume all .c .s source files will be used
 
1304
 
 
1305
  C_SRC         := $(call all_src,c) $(C_BUILT_HERE)
 
1306
  S_SRC         := $(call all_src,S) $(S_BUILT_HERE)
 
1307
  AS_SRC        := $(call all_src,s)
 
1308
 
 
1309
  C_OBJS        := $(C_SRC:.c=.o)
 
1310
  S_OBJS        := $(S_SRC:.S=.o)
 
1311
  AS_OBJS       := $(AS_SRC:.s=.o)
 
1312
 
 
1313
  OBJS          := $(strip $(C_OBJS) $(S_OBJS) $(AS_OBJS) $(CXX_OBJS) $(FTN_OBJS))
 
1314
endif
 
1315
 
 
1316
ifdef _PROGRAMS
 
1317
  # Objects can be explicitly declared as OBJS_program, where program is
 
1318
  # the name of one of the programs.  If no objects are explictly declared,
 
1319
  # then it is assumed that program is created from program.o.
 
1320
 
 
1321
  OBJS          := $(foreach prog,$(_PROGRAMS),$(if $(OBJS_$(prog)),$(OBJS_$(prog)),$(prog).o))
 
1322
endif
 
1323
 
 
1324
ifdef _EMBED
 
1325
  EMBED_OBJS    = $(patsubst %,%-embed.o,$(_PROGRAM) $(_PROGRAMS))
 
1326
  EMBED_OBJS_V  = $(filter $(addprefix %/,$(EMBED_OBJS)) $(EMBED_OBJS),$^)
 
1327
endif
 
1328
 
 
1329
ifdef _EMBED64
 
1330
  EMBED64_OBJS   = $(patsubst %,%-embed64.o,$(_PROGRAM) $(_PROGRAMS))
 
1331
  EMBED64_OBJS_V = $(filter $(addprefix %/,$(EMBED64_OBJS)) $(EMBED64_OBJS),$^)
 
1332
endif
 
1333
 
 
1334
ifdef OBJS
 
1335
  # This includes the full path of each object (needed for clone trees & VPATH)
 
1336
  OBJS_V        = $(filter $(addprefix %/,$(OBJS)) $(OBJS),$^)
 
1337
endif
 
1338
 
 
1339
ifdef START_FILE
 
1340
  START_FILE_V  = $(filter $(addprefix %/,$(START_FILE)) $(START_FILE),$^)
 
1341
endif
 
1342
 
 
1343
########################################################################
 
1344
#                       Implicit Rules
 
1345
########################################################################
 
1346
 
 
1347
#*************************************
 
1348
#    Create Objects (.o)
 
1349
#*************************************
 
1350
 
 
1351
#----------
 
1352
#    C
 
1353
#----------
 
1354
%.o: %.c
 
1355
        $(CC) $(_CPPFLAGS) $(_CFLAGS) -c $<
 
1356
 
 
1357
#----------
 
1358
#   C++
 
1359
#----------
 
1360
%.o: %.C
 
1361
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -c $<
 
1362
 
 
1363
%.o: %.cpp
 
1364
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -c $<
 
1365
 
 
1366
%.o: %.cc
 
1367
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -c $<
 
1368
 
 
1369
%.o: %.cxx
 
1370
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -c $<
 
1371
 
 
1372
#----------
 
1373
#  Fortran
 
1374
#----------
 
1375
 
 
1376
%.o: %.f
 
1377
        $(FORTRAN) $(_FFLAGS) -c $<
 
1378
 
 
1379
%.o: %.f90
 
1380
        $(FORTRAN) $(_FFLAGS) -c $<
 
1381
 
 
1382
#----------
 
1383
# Assembly
 
1384
#----------
 
1385
%.o: %.s
 
1386
        $(AS) $(_ASFLAGS) -o $@ $<
 
1387
 
 
1388
%.o: %.S
 
1389
        $(CPP) $(_SPPFLAGS) $< | $(AS) $(ASFLAGS) -o $@
 
1390
 
 
1391
#*************************************
 
1392
#   Create Assembly Source (.s)
 
1393
#*************************************
 
1394
 
 
1395
ifdef __spu__
 
1396
  ifeq "$(SPU_TIMING)" "1"
 
1397
      ASM_RULE_2 = ; /opt/cell/sdk/usr/bin/spu_timing -running-count $@
 
1398
  endif
 
1399
endif
 
1400
 
 
1401
#----------
 
1402
#    C
 
1403
#----------
 
1404
%.s: %.c
 
1405
        $(CC) $(_CPPFLAGS) $(_CFLAGS) -S $< $(ASM_RULE_2)
 
1406
 
 
1407
#----------
 
1408
#   C++
 
1409
#----------
 
1410
%.s: %.C
 
1411
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -S $< $(ASM_RULE_2)
 
1412
 
 
1413
%.s: %.cpp
 
1414
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -S $< $(ASM_RULE_2)
 
1415
 
 
1416
%.s: %.cc
 
1417
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -S $< $(ASM_RULE_2)
 
1418
 
 
1419
%.s: %.cxx
 
1420
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) -S $< $(ASM_RULE_2)
 
1421
 
 
1422
#----------
 
1423
#    Fortran
 
1424
#----------
 
1425
%.s: %.f
 
1426
        $(FORTRAN) $(_FFLAGS) -S $< $(ASM_RULE_2)
 
1427
 
 
1428
%.s: %.f90
 
1429
        $(FORTRAN) $(_FFLAGS) -S $< $(ASM_RULE_2)
 
1430
 
 
1431
#----------
 
1432
# Assembly
 
1433
#----------
 
1434
 
 
1435
ifdef _USING_XLC
 
1436
%.s: %.S
 
1437
        $(CPP) $(_SPPFLAGS) $< > $@
 
1438
else
 
1439
%.s: %.S
 
1440
        $(CPP) $(_SPPFLAGS) -o $@ $<
 
1441
endif
 
1442
 
 
1443
#*************************************
 
1444
#   Create Preprocessed Source (.i)
 
1445
#*************************************
 
1446
 
 
1447
ifdef _USING_XLC
 
1448
  _IFLAGS = -P
 
1449
else
 
1450
  _IFLAGS = -E -P -o $@
 
1451
endif
 
1452
 
 
1453
#----------
 
1454
#    C
 
1455
#----------
 
1456
%.i: %.c
 
1457
        $(CC) $(_CPPFLAGS) $(_CFLAGS) $(_IFLAGS) $<
 
1458
 
 
1459
#----------
 
1460
#   C++
 
1461
#----------
 
1462
%.i: %.C
 
1463
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_IFLAGS) $<
 
1464
 
 
1465
%.i: %.cpp
 
1466
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_IFLAGS) $<
 
1467
 
 
1468
%.i: %.cc
 
1469
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_IFLAGS) $<
 
1470
 
 
1471
%.i: %.cxx
 
1472
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_IFLAGS) $<
 
1473
 
 
1474
#----------
 
1475
#    Fortran
 
1476
#----------
 
1477
# no .i files for fortran
 
1478
 
 
1479
#----------
 
1480
# Assembly
 
1481
#----------
 
1482
%.i: %.S
 
1483
        $(CC) $(_SPPFLAGS) $(_CFLAGS) $(_IFLAGS) $<
 
1484
 
 
1485
 
 
1486
#*********************************
 
1487
#   Create Listing Files (.lst)
 
1488
#*********************************
 
1489
 
 
1490
ifdef _USING_XL
 
1491
  _LSTFLAGS     = -qsource -qlist -qlistopt -c
 
1492
 ifdef _USING_XLC
 
1493
  _LSTFLAGS     += -qshowinc 
 
1494
 endif
 
1495
else
 
1496
  _LSTFLAGS     = -E -o $@
 
1497
endif
 
1498
 
 
1499
#----------
 
1500
#    C
 
1501
#----------
 
1502
%.lst: %.c
 
1503
        $(CC) $(_CPPFLAGS) $(_CFLAGS) $(_LSTFLAGS) $<
 
1504
 
 
1505
#----------
 
1506
#   C++
 
1507
#----------
 
1508
%.lst: %.C
 
1509
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_LSTFLAGS) $<
 
1510
 
 
1511
%.lst: %.cpp
 
1512
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_LSTFLAGS) $<
 
1513
 
 
1514
%.lst: %.cc
 
1515
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_LSTFLAGS) $<
 
1516
 
 
1517
%.lst: %.cxx
 
1518
        $(CXX) $(_CPPFLAGS) $(_CXXFLAGS) $(_LSTFLAGS) $<
 
1519
 
 
1520
#----------
 
1521
#    Fortran
 
1522
#----------
 
1523
%.lst: %.f
 
1524
        $(FORTRAN) $(_FFLAGS) $(_LSTFLAGS) $<
 
1525
 
 
1526
%.lst: %.f90
 
1527
        $(FORTRAN) $(_FFLAGS) $(_LSTFLAGS) $<
 
1528
 
 
1529
#----------
 
1530
# Assembly
 
1531
#----------
 
1532
%.lst: %.S
 
1533
        $(CXX) $(_SPPFLAGS) $(_CXXFLAGS) $(_LSTFLAGS) $<
 
1534
 
 
1535
 
 
1536
########################################################################
 
1537
#                       Subdirectories
 
1538
########################################################################
 
1539
 
 
1540
# dummydir:
 
1541
 
 
1542
ifdef DIRS
 
1543
.PHONY: $(DIRS)
 
1544
 
 
1545
$(DIRS):
 
1546
        @if [ -r $@/Makefile ]; then $(MAKE) -C $@ $(MAKECMDGOALS); fi
 
1547
endif
 
1548
 
 
1549
ifdef GNU_DIRS
 
1550
.PHONY: $(GNU_DIRS)
 
1551
$(GNU_DIRS):
 
1552
        @if [ -r $@/Makefile.sti ];                                     \
 
1553
        then                                                            \
 
1554
            echo;                                                       \
 
1555
            echo "***************************************************"; \
 
1556
            echo "*";                                                   \
 
1557
            echo "* [`date +\"%b %d %T\"`] Configuring gnu directory $(notdir $(CURDIR))/$@";\
 
1558
            echo "*";                                                   \
 
1559
            echo "***************************************************"; \
 
1560
            echo;                                                       \
 
1561
            $(MAKE) -C $@ -f Makefile.sti;                              \
 
1562
        fi;                                                             \
 
1563
        if [ -r $@/Makefile ];                                          \
 
1564
        then                                                            \
 
1565
            echo;                                                       \
 
1566
            echo "***************************************************"; \
 
1567
            echo "*";                                                   \
 
1568
            echo "* [`date +\"%b %d %T\"`] Building gnu directory $(notdir $(CURDIR))/$@";\
 
1569
            echo "*";                                                   \
 
1570
            echo "***************************************************"; \
 
1571
            echo;                                                       \
 
1572
            $(MAKE) -C $@ all install;                                  \
 
1573
        fi
 
1574
endif
 
1575
 
 
1576
 
 
1577
########################################################################
 
1578
#                       Library Rules
 
1579
########################################################################
 
1580
 
 
1581
ifdef _LIBRARY
 
1582
$(_LIBRARY): $(SRC_BUILT_HERE) $(OBJS) $(_IMPORTS)
 
1583
        $(AR) -qcs $@ $(OBJS_V) $(_IMPORTS)
 
1584
endif
 
1585
 
 
1586
 
 
1587
########################################################################
 
1588
#                       Embedded Library Rules
 
1589
########################################################################
 
1590
 
 
1591
# we use PPU_AR here explicitly because this usually happens in an spu
 
1592
#  directory where __spu__ is defined, but the output is a ppu library.
 
1593
ifdef _LIBRARY_embed
 
1594
$(_LIBRARY_embed): $(EMBED_OBJS)
 
1595
        $(PPU_AR) -qcs $@ $(EMBED_OBJS_V)
 
1596
endif
 
1597
 
 
1598
ifdef _LIBRARY_embed64
 
1599
$(_LIBRARY_embed64): $(EMBED64_OBJS)
 
1600
        $(PPU_AR) -qcs $@ $(EMBED64_OBJS_V)
 
1601
endif
 
1602
 
 
1603
ifdef EMBED_OBJS
 
1604
# Embed into a 32-bit PPU obj
 
1605
$(EMBED_OBJS): %-embed.o: %
 
1606
        $(EMBEDSPU32) $(subst -,_,$<)$(FTN_UNDERSCORE) $< $@
 
1607
endif
 
1608
 
 
1609
ifdef EMBED64_OBJS
 
1610
# Embed spu obj into a 64-bit PPU obj
 
1611
$(EMBED64_OBJS): %-embed64.o: %
 
1612
        $(EMBEDSPU64) $(subst -,_,$<)$(FTN_UNDERSCORE) $< $@
 
1613
endif
 
1614
 
 
1615
 
 
1616
########################################################################
 
1617
#                       Executable Program Rules
 
1618
########################################################################
 
1619
 
 
1620
# get the filenames of the objs for this target, w/out the suffix:
 
1621
BASENAME_OBJS=$(basename $(OBJS))
 
1622
 
 
1623
# we need to determine if any of the OBJS were made with c++ files; if so
 
1624
# then we have to use g++/xlC; otherwise we'll use gcc/xlc
 
1625
# get the filenames of the c++ files we found in our vpath, w/out the suffix:
 
1626
BASENAME_CXX_OBJS=$(basename $(CXX_OBJS))
 
1627
# intersect - if any match, then we have a c++ file in the obj list
 
1628
findcxxinobj=$(filter $(a),$(BASENAME_CXX_OBJS))
 
1629
BASENAME_TRUE_CXX_OBJS=$(foreach a,$(BASENAME_OBJS),$(findcxxinobj))
 
1630
# and if there is any in this list, we have to use g++/xlC
 
1631
ifneq "$(strip $(BASENAME_TRUE_CXX_OBJS))" ""
 
1632
  _LD = $(CXX)
 
1633
  _LDFLAGS += $(C_COMPILER_LDFLAGS)
 
1634
else
 
1635
 # we need to determine if any of the OBJS were made with fortran files; if so
 
1636
 # then we have to use gfortran/xlf; otherwise we'll use gcc/xlc
 
1637
 # get the filenames of the fortran files we found in our vpath, w/out the suffix:
 
1638
 BASENAME_FTN_OBJS=$(basename $(FTN_OBJS))
 
1639
 # intersect - if any match, then we have a fortran file in the obj list
 
1640
 findftninobj=$(filter $(a),$(BASENAME_FTN_OBJS))
 
1641
 BASENAME_TRUE_FTN_OBJS=$(foreach a,$(BASENAME_OBJS),$(findftninobj))
 
1642
 # and if there is any in this list, we have to use gfortran/xlf
 
1643
 ifneq "$(strip $(BASENAME_TRUE_FTN_OBJS))" ""
 
1644
  _LD = $(FORTRAN)
 
1645
  _LDFLAGS += $(FTN_COMPILER_LDFLAGS)
 
1646
 else
 
1647
  _LD = $(CC)
 
1648
  _LDFLAGS += $(C_COMPILER_LDFLAGS)
 
1649
 endif
 
1650
endif
 
1651
 
 
1652
ifdef _PROGRAM
 
1653
$(_PROGRAM): $(SRC_BUILT_HERE) $(OBJS) $(_IMPORTS) $(START_FILE)
 
1654
        $(_LD) -o $@ $(START_FILE_V) $(OBJS_V) $(_LDFLAGS) $(_IMPORTS) $(SYS_LIBS)
 
1655
endif
 
1656
 
 
1657
ifdef _PROGRAMS
 
1658
#The % doesn't work in the $(OBJS_%) dependency:
 
1659
#$(_PROGRAMS): %: $(SRC_BUILT_HERE) $(OBJS_%) $(_IMPORTS)
 
1660
$(_PROGRAMS): $(SRC_BUILT_HERE) $(OBJS) $(_IMPORTS) $(_PER_FILE_IMPORTS) $(START_FILE)
 
1661
        @if [ "$(OBJS_$@)" != "" ];                                     \
 
1662
        then                                                            \
 
1663
            objs="$(filter $(addprefix %/,$(OBJS_$@)) $(OBJS_$@),$^)";  \
 
1664
        else                                                            \
 
1665
            objs="$(filter $(addprefix %/,$@.o) $@.o,$^)";              \
 
1666
        fi;                                                             \
 
1667
        per_file_syslibs="$(filter -l%,$(IMPORTS_$@))";                 \
 
1668
        per_file_imports="$(filter $(addprefix %/,$(IMPORTS_$@)) $(IMPORTS_$@),$^)";\
 
1669
        imports="$(_IMPORTS) $$per_file_imports $$per_file_syslibs";    \
 
1670
        echo "$(_LD) -o $@ $(START_FILE_V) $$objs $(_LDFLAGS) $$imports $(SYS_LIBS)";\
 
1671
              $(_LD) -o $@ $(START_FILE_V) $$objs $(_LDFLAGS) $$imports $(SYS_LIBS)
 
1672
endif
 
1673
 
 
1674
 
 
1675
########################################################################
 
1676
#                       Shared Library Rules
 
1677
########################################################################
 
1678
 
 
1679
ifdef _SHARED_LIBRARY
 
1680
$(_SHARED_LIBRARY): $(SRC_BUILT_HERE) $(OBJS) $(_IMPORTS)
 
1681
        $(LD) $(LDFLAGS) -o $@ $(SHARED_LDFLAGS) $(OBJS_V) $(_IMPORTS) $(SYS_LIBS)
 
1682
endif
 
1683
 
 
1684
ifdef _SHARED_LIBRARY_embed
 
1685
$(_SHARED_LIBRARY_embed): $(SRC_BUILT_HERE) $(EMBED_OBJS)
 
1686
        $(subst spu,ppu,$(subst $(SPU_TOOL_PREFIX),$(PPU32_TOOL_PREFIX),$(LD))) -o $@ $(SHARED_LDFLAGS) $(EMBED_OBJS_V)
 
1687
endif
 
1688
 
 
1689
ifdef _SHARED_LIBRARY_embed64
 
1690
$(_SHARED_LIBRARY_embed64): $(SRC_BUILT_HERE) $(EMBED64_OBJS)
 
1691
        $(subst spu,ppu,$(subst $(SPU_TOOL_PREFIX),$(PPU_TOOL_PREFIX),$(LD))) -o $@ $(SHARED_LDFLAGS) $(EMBED64_OBJS_V)
 
1692
endif
 
1693
 
 
1694
 
 
1695
########################################################################
 
1696
#                       Install Rules
 
1697
########################################################################
 
1698
.SECONDEXPANSION:
 
1699
 
 
1700
ifdef _PROGRAM_dir
 
1701
$(PROGRAM): $(_PROGRAM)
 
1702
        @if [ "$(@D)" = "" ]; then echo "Error in PROGRAM definition (use = instead of :=)"; exit 1; fi
 
1703
        @$(MKDIR) $(@D)
 
1704
        $(CP) $< $@
 
1705
endif
 
1706
 
 
1707
ifdef _PROGRAMS_dirs
 
1708
$(PROGRAMS): $$(@F)
 
1709
        @if [ "$(@D)" = "" ]; then echo "Error in PROGRAMS definition (use = instead of :=)"; exit 1; fi
 
1710
        @$(MKDIR) $(@D)
 
1711
        $(CP) $< $@
 
1712
endif
 
1713
 
 
1714
ifdef _LIBRARY_dir
 
1715
$(LIBRARY): $(_LIBRARY)
 
1716
        @if [ "$(@D)" = "" ]; then echo "Error in LIBRARY definition (use = instead of :=)"; exit 1; fi
 
1717
        @$(MKDIR) $(@D)
 
1718
        $(CP) $< $@
 
1719
endif
 
1720
 
 
1721
ifdef _LIBRARY_embed_dir
 
1722
$(LIBRARY_embed): $(_LIBRARY_embed)
 
1723
        @if [ "$(@D)" = "" ]; then echo "Error in LIBRARY_embed definition (use = instead of :=)"; exit 1; fi
 
1724
        @$(MKDIR) $(@D)
 
1725
        $(CP) $< $@
 
1726
endif
 
1727
 
 
1728
ifdef _LIBRARY_embed64_dir
 
1729
$(LIBRARY_embed64): $(_LIBRARY_embed64)
 
1730
        @if [ "$(@D)" = "" ]; then echo "Error in LIBRARY_embed64 definition (use = instead of :=)"; exit 1; fi
 
1731
        @$(MKDIR) $(@D)
 
1732
        $(CP) $< $@
 
1733
endif
 
1734
 
 
1735
ifdef _SHARED_LIBRARY_dir
 
1736
$(SHARED_LIBRARY): $(_SHARED_LIBRARY)
 
1737
        @if [ "$(@D)" = "" ]; then echo "Error in SHARED_LIBRARY definition (use = instead of :=)"; exit 1; fi
 
1738
        @$(MKDIR) $(@D)
 
1739
        $(CP) $< $@
 
1740
endif
 
1741
 
 
1742
ifdef SHARED_LIBRARY_embed_dir
 
1743
$(SHARED_LIBRARY_embed): $(_SHARED_LIBRARY_embed)
 
1744
        @if [ "$(@D)" = "" ]; then echo "Error in SHARED_LIBRARY_embed definition (use = instead of :=)"; exit 1; fi
 
1745
        @$(MKDIR) $(@D)
 
1746
        $(CP) $< $@
 
1747
endif
 
1748
 
 
1749
ifdef SHARED_LIBRARY_embed64_dir
 
1750
$(SHARED_LIBRARY_embed64): $(_SHARED_LIBRARY_embed64)
 
1751
        @if [ "$(@D)" = "" ]; then echo "Error in SHARED_LIBRARY_embed64 definition (use = instead of :=)"; exit 1; fi
 
1752
        @$(MKDIR) $(@D)
 
1753
        $(CP) $< $@
 
1754
endif
 
1755
 
 
1756
 
 
1757
ifdef INSTALL_DIR
 
1758
  _INSTALL_FILES = $(foreach dir,$(INSTALL_DIR),$(addprefix $(dir)/,$(INSTALL_FILES)))
 
1759
else
 
1760
  _INSTALL_FILES = $(INSTALL_FILES)
 
1761
endif
 
1762
 
 
1763
ifdef TARGET_INSTALL_DIR
 
1764
  _INSTALL_FILES += $(addprefix $(TARGET_INSTALL_DIR)/,$(TARGETS))
 
1765
endif
 
1766
 
 
1767
ifneq "$(_INSTALL_FILES)" ""
 
1768
$(_INSTALL_FILES): $$(@F)
 
1769
        @$(MKDIR) $(@D)
 
1770
        $(CP) $< $@
 
1771
endif
 
1772
 
 
1773
install: $(_INSTALL_FILES)
 
1774
 
 
1775
 
 
1776
########################################################################
 
1777
#                       Cleanup Rules
 
1778
########################################################################
 
1779
 
 
1780
cleaninstall:
 
1781
ifdef _INSTALL_FILES
 
1782
        @$(RM) $(_INSTALL_FILES)
 
1783
endif
 
1784
 
 
1785
cleanlocal:
 
1786
 
 
1787
cleanmap:
 
1788
ifdef MAPFILE
 
1789
        @$(RM) $(MAPFILE)
 
1790
endif
 
1791
 
 
1792
cleantobey:
 
1793
ifdef _USING_XLC
 
1794
        @$(RM) *_tobey.c *.lst *.i *.i.tmp *o\$$1.s
 
1795
endif
 
1796
 
 
1797
cleanobj:
 
1798
        @$(RM) $(TARGETPATH_)*.o
 
1799
 
 
1800
cleand:
 
1801
        @$(RM) $(TARGETPATH_)*.d
 
1802
 
 
1803
cleanfortran:
 
1804
        @$(RM) $(TARGETPATH_)*.mod
 
1805
 
 
1806
cleanlib:
 
1807
        @$(RM) $(LIBRARY)$(_LIBRARY)                                    \
 
1808
               $(SHARED_LIBRARY)$(_SHARED_LIBRARY)                      \
 
1809
               $(_SHARED_LIBRARY_SONAME)$(_SHARED_LIBRARY_VERSION)      \
 
1810
               $(LIBRARY_embed)$(_LIBRARY_embed)                        \
 
1811
               $(LIBRARY_embed64)$(_LIBRARY_embed64)                    \
 
1812
               $(SHARED_LIBRARY_embed) $(_SHARED_LIBRARY_embed)         \
 
1813
               $(SHARED_LIBRARY_embed64) $(_SHARED_LIBRARY_embed64)
 
1814
 
 
1815
cleanexe:
 
1816
        @$(RM) $(PROGRAM) $(_PROGRAM) $(PROGRAMS) $(_PROGRAMS)
 
1817
 
 
1818
cleantargets:
 
1819
        @$(RM) -r $(LOCAL_TARGETS) $(OTHER_TARGETS)
 
1820
 
 
1821
cleandir: cleanobj cleand cleanlib cleanexe cleantargets cleanmap cleantobey cleanlocal cleanfortran
 
1822
        @$(RM) out $(SRC_BUILT_HERE)
 
1823
 
 
1824
.PHONY: cleansubdirs
 
1825
 
 
1826
cleansubdirs:
 
1827
ifdef DIRS
 
1828
        @for i in $(DIRS); do \
 
1829
          if [ -e $$i/Makefile ]; then $(MAKE) -C $$i clean; fi \
 
1830
        done
 
1831
endif
 
1832
ifdef GNU_DIRS
 
1833
        for i in $(GNU_DIRS); do \
 
1834
          if [ -e $$i/Makefile.sti ]; then $(MAKE) -C $$i -f Makefile.sti clean; fi \
 
1835
        done
 
1836
endif
 
1837
 
 
1838
clean: cleandir cleansubdirs cleaninstall
 
1839
 
 
1840
 
 
1841
########################################################################
 
1842
#                       Dependency Rules 
 
1843
########################################################################
 
1844
 
 
1845
ifdef OBJS
 
1846
  _OBJS         = $(OBJS)
 
1847
endif
 
1848
 
 
1849
ifdef OBJS_ONLY
 
1850
  _OBJS         += $(OBJS_ONLY)
 
1851
endif
 
1852
 
 
1853
ifdef _OBJS
 
1854
  $(_OBJS): Makefile
 
1855
 
 
1856
  ifndef _USING_XLC
 
1857
    $(_OBJS): %.o: %.d
 
1858
  endif
 
1859
endif
 
1860
 
 
1861
MACROIZE = -e 's,$(CELL_TOP),$$(CELL_TOP),g'
 
1862
ifneq "$(strip $(CBE_SYSROOT))" ""
 
1863
        MACROIZE += -e 's, $(CBE_SYSROOT), $$(CBE_SYSROOT),g'
 
1864
endif
 
1865
ifneq "$(strip $(XLC_INSTALL_DIR))" ""
 
1866
        MACROIZE += -e 's,$(XLC_INSTALL_DIR),$$(XLC_INSTALL_DIR),g'
 
1867
endif
 
1868
ifneq "$(strip $(GNU_SYSROOT))" ""
 
1869
        MACROIZE += -e 's,$(GNU_SYSROOT),$$(GNU_SYSROOT),g'
 
1870
endif
 
1871
 
 
1872
CONVERT_U = -M $(_CPPFLAGS) $< | \
 
1873
            sed -e 's/\($*\)\.o[ :]*/\1.o \1.i \1.lst $@ : /g'  \
 
1874
            $(MACROIZE) > $@; [ -s $@ ] || $(RM) $@
 
1875
 
 
1876
ifdef _USING_XLC
 
1877
 
 
1878
# xlc handles .d automagically with the -M option while compiling
 
1879
 
 
1880
else
 
1881
 
 
1882
%.d: %.c
 
1883
        @set -e; $(CC) $(CONVERT_U)
 
1884
 
 
1885
%.d: %.C
 
1886
        @set -e; $(CXX) $(CONVERT_U)
 
1887
 
 
1888
%.d: %.cpp
 
1889
        @set -e; $(CXX) $(CONVERT_U)
 
1890
 
 
1891
%.d: %.cc
 
1892
        @set -e; $(CXX) $(CONVERT_U)
 
1893
 
 
1894
%.d: %.cxx
 
1895
        @set -e; $(CXX) $(CONVERT_U)
 
1896
 
 
1897
%.d: %.S
 
1898
        @set -e; $(CC) $(CONVERT_U)
 
1899
 
 
1900
# following don't do .d files, so just touch one to satisfy the makefile rule
 
1901
%.d: %.s
 
1902
        @touch $@
 
1903
 
 
1904
%.d: %.f
 
1905
        @touch $@
 
1906
 
 
1907
%.d: %.f90
 
1908
        @touch $@
 
1909
 
 
1910
endif
 
1911
 
 
1912
 
 
1913
########################################################################
 
1914
#                       Build Info
 
1915
########################################################################
 
1916
 
 
1917
copy_sysroot:
 
1918
        @mkdir -p ./sysroot/opt/cell/sdk
 
1919
        @cp -r ${GNU_SYSROOT}/opt/cell/sdk/usr ./sysroot/opt/cell/sdk
 
1920
        @if [ -d ${GNU_SYSROOT}/opt/cell/sdk/prototype/usr ]; then \
 
1921
                mkdir -p ./sysroot/opt/cell/sdk/prototype; \
 
1922
                cp -r ${GNU_SYSROOT}/opt/cell/sdk/prototype/usr ./sysroot/opt/cell/sdk/prototype; \
 
1923
        fi
 
1924
        @echo "sysroot copied into sandbox";
 
1925
 
 
1926
 
 
1927
copy_buildutils:
 
1928
        @cp -r ${OPTDIR}/buildutils .
 
1929
        @echo "buildutils copied into sandbox"
 
1930
 
 
1931
copy_src:
 
1932
        @mkdir -p ./src
 
1933
        @cp ${OPTDIR}/src/Makefile src
 
1934
        @mkdir -p ./prototype/src
 
1935
        @echo "src directory created in sandbox"
 
1936
        
 
1937
sandbox: copy_buildutils copy_sysroot copy_src
 
1938
        @echo "making a local sandbox here (" `pwd` ")"
 
1939
        @echo "make sure you do the following:"
 
1940
        @echo "export CELL_TOP="`pwd`
 
1941
 
 
1942
# Specify a target that will print out the key variables.  This is
 
1943
# useful for debugging a Makefile.
 
1944
 
 
1945
listenv_c:
 
1946
        @echo $(shell which $(CC))
 
1947
 
 
1948
listenv_f:
 
1949
        @echo $(shell which $(FORTRAN))
 
1950
 
 
1951
listenv:
 
1952
        @echo
 
1953
        @echo "Directory Configuration:"
 
1954
        @echo "------------------------"
 
1955
        @echo "    Building on:      $(HOST_PROCESSOR) $(shell if [ -r /etc/redhat-release ]; then cat /etc/redhat-release; fi)"
 
1956
        @echo "    Target Processor: $(TARGET_PROCESSOR)"
 
1957
        @echo "    Makefiles:        $(strip $(MAKEFILE_LIST))"
 
1958
        @echo
 
1959
        @echo "    CELL_TOP       = $(CELL_TOP) ($(abspath $(CELL_TOP)))"
 
1960
        @echo "    VPATH          = $(VPATH)"
 
1961
        @echo "    PATH           = $(PATH)"
 
1962
        @echo 
 
1963
        @echo "    ROOT_SYSROOT   = $(ROOT_SYSROOT)"
 
1964
        @echo "    CBE_SYSROOT    = $(CBE_SYSROOT)"
 
1965
        @echo "    EXP_SYSROOT    = $(EXP_SYSROOT)"
 
1966
        @echo "    OPTDIR         = $(OPTDIR)"
 
1967
        @echo "    SDK_OPTDIR     = $(SDK_OPTDIR)"
 
1968
        @echo 
 
1969
        @echo "    SDKBIN         = $(SDKBIN)"
 
1970
        @echo "    SDKINC         = $(SDKINC)"
 
1971
        @echo "    SDKLIB         = $(SDKLIB)"
 
1972
        @echo 
 
1973
        @echo "    SDKEXBIN       = $(SDKEXBIN)"
 
1974
        @echo "    SDKEXINC       = $(SDKEXINC)"
 
1975
        @echo "    SDKEXLIB       = $(SDKEXLIB)"
 
1976
        @echo 
 
1977
        @echo "    SDKRPATH       = $(SDKRPATH)"
 
1978
        @echo "    SDKEXRPATH     = $(SDKEXRPATH)"
 
1979
        @echo "    SDKPRRPATH     = $(SDKPRRPATH)"
 
1980
        @echo 
 
1981
        @echo "    EXP_SDKBIN     = $(EXP_SDKBIN)"
 
1982
        @echo "    EXP_SDKINC     = $(EXP_SDKINC)"
 
1983
        @echo "    EXP_SDKLIB     = $(EXP_SDKLIB)"
 
1984
        @echo 
 
1985
        @echo "    EXP_SDKPRBIN   = $(EXP_SDKPRBIN)"
 
1986
        @echo "    EXP_SDKPRINC   = $(EXP_SDKPRINC)"
 
1987
        @echo "    EXP_SDKPRLIB   = $(EXP_SDKPRLIB)"
 
1988
        @echo 
 
1989
        @echo "    SYSTEMSIM_INCLUDE  = $(SYSTEMSIM_INCLUDE)"
 
1990
        @echo 
 
1991
        @echo "    Files:"
 
1992
        @echo "    ------"
 
1993
        @echo "    Targets        = $(strip $(TARGETS))"
 
1994
        @echo "    Objects        = $(strip $(OBJS))"
 
1995
        @echo "    Embed Objects  = $(strip $(EMBED_OBJS))"
 
1996
        @echo "    Embed64 Objs   = $(strip $(EMBED64_OBJS))"
 
1997
        @echo "    C++ Objects    = $(strip $(CXX_OBJS))"
 
1998
        @echo "    Fortran Objects= $(strip $(FTN_OBJS))"
 
1999
        @echo "    C Objects      = $(strip $(C_OBJS))"
 
2000
        @echo "    .S Objects     = $(strip $(S_OBJS))"
 
2001
        @echo "    .s Objects     = $(strip $(AS_OBJS))"
 
2002
        @echo "    Install Files  = $(strip $(_INSTALL_FILES))"
 
2003
        @echo
 
2004
        @echo "    Build Tools:"
 
2005
        @echo "    ------------"
 
2006
        @echo "    C Preprocessor = $(CPP)"
 
2007
        @echo "    C Compiler     = $(shell which $(CC))"
 
2008
        @echo "    C++ Compiler   = $(shell which $(CXX))"
 
2009
        @echo "    Fortran Compiler = $(shell which $(FORTRAN))"
 
2010
        @echo "    Assembler      = $(shell which $(AS))"
 
2011
        @echo "    Library Linker = $(shell which $(LD))"
 
2012
        @echo "    Program Linker = $(shell which $(_LD))"
 
2013
        @echo
 
2014
        @echo "    Default Flags"
 
2015
        @echo "    -------------"
 
2016
        @echo "    CPPFLAGS       = $(strip $(_CPPFLAGS))"
 
2017
        @echo "    CXXFLAGS       = $(strip $(_CXXFLAGS))"
 
2018
        @echo "    CFLAGS         = $(strip $(_CFLAGS))"
 
2019
        @echo "    ASFLAGS        = $(strip $(_ASFLAGS))"
 
2020
        @echo "    FFLAGS         = $(strip $(_FFLAGS))"
 
2021
        @echo "    LDFLAGS        = $(strip $(_LDFLAGS))"
 
2022
        @echo "    SYS_LIBS       = $(strip $(SYS_LIBS))"
 
2023
        @echo "    IMPORTS        = $(strip $(_IMPORTS))"
 
2024
 
 
2025
$(CELL_TOP)/buildutils/make.header $(CELL_TOP)/buildutils/make.env $(make_footer) Makefile Makefile.sti: ;
 
2026
 
 
2027
 
 
2028
########################################################################
 
2029
#                       Dependencies
 
2030
########################################################################
 
2031
 
 
2032
ifdef _OBJS
 
2033
  ifneq "$(MAKECMDGOALS)" "listenv"
 
2034
  ifneq "$(MAKECMDGOALS)" "clean"
 
2035
    DEPEND_FILES := $(foreach file,$(_OBJS:.o=.d),$(wildcard $(file)))
 
2036
    ifneq "$(DEPEND_FILES)" ""
 
2037
      include $(DEPEND_FILES)
 
2038
    endif
 
2039
  endif
 
2040
  endif
 
2041
endif
 
2042
 
 
2043
endif # MAKEFILE_LIST
 
2044
endif # __MAKE_FOOTER__