1###############################################################################
2# Global common definitions for build system
3#
4# Copyright 2005-2006 Nintendo.  All rights reserved.
5#
6# These coded instructions, statements, and computer programs contain
7# proprietary information of Nintendo of America Inc. and/or Nintendo
8# Company Ltd., and are protected by Federal copyright law.  They may
9# not be disclosed to third parties or copied or duplicated in any form,
10# in whole or in part, without the prior written consent of Nintendo.
11###############################################################################
12
13# This file contains common definitions that exist across the build
14
15#
16# Check make version
17#
18ifneq   ($(MAKE_VERSION),3.80)
19__version:
20	@echo ---- Sorry, this makefile is for \'make\' version 3.80
21	@make -v
22	@exit 1
23endif
24
25###############################################################################
26#
27#    COMMON BUILD FLAGS AND CONSTANTS
28#
29###############################################################################
30
31# This is where all directories will live.
32# Note that if you change ROOT, you must change the BUILDTOOLS_ROOT
33# environment variable.
34empty:=
35space:= $(empty) $(empty)
36comma:= ,
37
38#=============================================================================
39# REVOLUTION_SDK_ROOT
40#=============================================================================
41#REVOLUTION_SDK_ROOT:=C:\RevolutionSDK
42ROOT:= $(subst $(space),\$(space),$(subst \,/,$(REVOLUTION_SDK_ROOT)))
43
44
45# Default destination install directory, where installs will occur
46BASEINSTALL_ROOT= $(ROOT)
47
48# determine the architecture target
49# If PLATFORM is not set, it will default to RVL
50ifeq ($(origin PLATFORM), undefined)
51PLATFORM:=RVL
52endif
53
54ARCH_TARGET = $(PLATFORM)
55
56
57ifeq ($(PLATFORM), RVL)
58RVL_OS           = TRUE
59HOLLYWOOD_REV    = 1
60BROADWAY_REV     = 1
61IOP_REV          = 1
62EPPC             = TRUE
63PROCESSOR        = gekko
64TRK_INTEGRATION  = TRUE
65endif #RVL
66
67# RVL0 (former RVL_AHBPI)
68ifeq ($(PLATFORM), RVL0)
69RVL_OS           = TRUE
70HOLLYWOOD_REV    = 1
71BROADWAY_REV     = 1
72IOP_REV          = 1
73DI_DIRECT        = TRUE
74EPPC             = TRUE
75PROCESSOR        = gekko
76TRK_INTEGRATION  = TRUE
77endif #RVL0
78
79ifeq ($(PLATFORM), RVL_LEGACYDI)
80RVL_OS           = TRUE
81HOLLYWOOD_REV    = 1
82BROADWAY_REV     = 1
83IOP_REV          = 1
84DI_DIRECT        = TRUE
85NO_AHBPI_DSEA    = TRUE
86EPPC             = TRUE
87PROCESSOR        = gekko
88TRK_INTEGRATION  = TRUE
89endif #RVL_LEGACYDI
90
91ifeq ($(PLATFORM), RVL_EMU)
92RVL_OS           = TRUE
93BROADWAY_EMU     = TRUE
94HOLLYWOOD_EMU    = TRUE
95IOP_EMU          = TRUE
96NO_AHBPI_DSEA    = TRUE
97EPPC             = TRUE
98PROCESSOR        = gekko
99TRK_INTEGRATION  = TRUE
100endif #RVL_EMU
101
102ifeq ($(PLATFORM), PRE_RVL)
103RVL_OS           = TRUE
104DI_DIRECT        = TRUE
105NO_AHBPI_DSEA    = TRUE
106EPPC             = TRUE
107PROCESSOR        = gekko
108TRK_INTEGRATION  = TRUE
109endif # PRE_RVL
110
111
112ifndef NDEBUG
113DEBUG           = TRUE
114BUILD_TARGET    = DEBUG
115else  # NDEBUG
116BUILD_TARGET    = NDEBUG
117endif # NDEBUG
118
119INSTALL_ROOT    = $(BASEINSTALL_ROOT)/$(ARCH_TARGET)
120
121# Default binaries/tools directory
122BIN           = $(INSTALL_ROOT)/bin
123
124# Default location of the sources and makefiles
125INC_ROOT      = $(ROOT)/include
126BUILD_ROOT    = $(ROOT)/build
127MAKE_ROOT     = $(BUILD_ROOT)/buildtools
128DOL_INC_ROOT  = $(INC_ROOT)
129LIB_ROOT      = $(BUILD_ROOT)/libraries
130DEMO_ROOT     = $(BUILD_ROOT)/demos
131TEST_ROOT     = $(BUILD_ROOT)/tests
132SAMPLE_ROOT   = $(BUILD_ROOT)/samplebuild
133TOOL_ROOT     = $(BUILD_ROOT)/tools
134
135
136# Default location of the Metrowerks.  CWFOLDER is set by the
137# Codewarrior installer.  Change the backslashes into normal slashes,
138# and backslash any spaces in the path.
139ifdef CWFOLDER_RVL
140MWDIR       = $(subst $(space),\$(space),$(subst \,/,$(CWFOLDER_RVL)))
141else
142MWDIR       = $(subst $(space),\$(space),$(subst \,/,$(CWFOLDER)))
143endif
144
145AMCDIR      = $(subst $(space),\$(space),$(subst \,/,$(AMCDDKBIN)))
146ODEDIR      = $(subst $(space),\$(space),$(subst \,/,$(ODEMUSDKBIN)))
147NDEVDIR      = $(subst $(space),\$(space),$(subst \,/,$(NDEV_TOOLS)))
148
149###############################################################################
150#
151#    COMMON COMPILER FLAGS
152#
153###############################################################################
154
155#
156# for CodeWarrior
157#
158# -nodefaults       - required so the compiler does not search all the
159#                      Codewarrior paths
160# -proc 750         - which CPU
161# -align powerpc    - 4 byte alignment by default
162# -xm l             - create a library
163
164CCFLAGS = -nodefaults -proc $(PROCESSOR) -D$(ARCH_TARGET) -align powerpc -enum int
165ASFLAGS = -nodefaults -proc $(PROCESSOR) -D$(ARCH_TARGET)
166ARFLAGS = -nodefaults -proc $(PROCESSOR) -xm l
167LDFLAGS = -nodefaults -proc $(PROCESSOR)
168REL_LDFLAGS    = -nodefaults -proc $(PROCESSOR) -nostdlib
169PREREL_LDFLAGS = -nodefaults -proc $(PROCESSOR) -nostdlib
170
171# add yasuh-to 2005/12/28
172CCFLAGS += -enc SJIS
173# ifeq  ($(REVOLUTION_SDK_LANG),en)
174# CCFLAGS += -enc ascii
175# else
176# CCFLAGS += -enc SJIS
177# endif
178
179ifdef MULTIBYTE
180CCFLAGS += -multibyte -char unsigned
181endif #MULTIBYTE
182
183# common debug related flags
184ifdef DEBUG
185# _DEBUG is our symbol for saying "debug version".  The absence of NDEBUG
186# can also be used by code.
187CCFLAGS += -D_DEBUG
188ASFLAGS += -D_DEBUG
189else   # DEBUG
190# NDEBUG is our symbol for saying "no debug version".  The absence of _DEBUG
191# can also be used by code.
192CCFLAGS += -DNDEBUG
193ASFLAGS += -DNDEBUG
194endif  # DEBUG
195
196# SDK switch
197ifneq ($(SDK), DOL)
198CCFLAGS      += -DRVL_SDK
199ASFLAGS      += -DRVL_SDK
200endif
201
202###############################################################################
203#
204#    EPPC-SPECIFIC Build Flags and Variables
205#
206###############################################################################
207
208#
209# for CodeWarrior
210#
211# -fp hardware      - allow use of hardware FP instructions
212# -Cpp_exceptions   - turns off C++ exceptions.
213CCFLAGS += -fp hardware -Cpp_exceptions off
214ifndef CATS_ON
215CCFLAGS += -pragma "cats off"
216endif # CATS_ON
217
218
219MWCLDIR       = $(MWDIR)/PowerPC_EABI_TOOLS/Command_Line_Tools
220MWLIBDIR      = $(MWDIR)/PowerPC_EABI_Support/Runtime/Lib
221
222# H is for hardware floating point
223EPPCMWLIBS    = $(MWLIBDIR)/Runtime.PPCEABI.H.a \
224                $(MWDIR)/PowerPC_EABI_Support/MSL/MSL_C/PPC_EABI/Lib/MSL_C.PPCEABI.bare.H.a \
225                $(MWDIR)/PowerPC_EABI_Support/MSL/MSL_C++/PPC_EABI/Lib/MSL_C++.PPCEABI.bare.H.a
226
227ifdef TRK_INTEGRATION
228
229ifdef HOLLYWOOD_REV
230EPPCMWLIBS   += $(MWDIR)/PowerPC_EABI_Support/MetroTRK/TRK_Hollywood_Revolution.a
231else
232EPPCMWLIBS   += $(MWDIR)/PowerPC_EABI_Support/MetroTRK/TRK_MINNOW_DOLPHIN.a
233endif
234
235
236ifeq ($(PLATFORM), RVL)
237  ifdef NDEV
238    EPPCMWLIBS   += $(NDEVDIR)/../lib/NdevExi2A$(LIBSUFFIX) -lodenotstub$(LIBSUFFIX)
239  else
240    EPPCMWLIBS   += -lodemustubs$(LIBSUFFIX)
241  endif
242endif
243
244ifeq ($(PLATFORM), RVL0)
245  ifdef NDEV
246    EPPCMWLIBS   += $(NDEVDIR)/../lib/NdevExi2A$(LIBSUFFIX) -lodenotstub$(LIBSUFFIX)
247  else
248    EPPCMWLIBS   += -lodemustubs$(LIBSUFFIX)
249  endif
250endif
251
252ifeq ($(PLATFORM), RVL_LEGACYDI)
253  ifdef NDEV
254    EPPCMWLIBS   += $(NDEVDIR)/../lib/NdevExi2$(LIBSUFFIX) -lodenotstub$(LIBSUFFIX)
255  else
256    EPPCMWLIBS   += -lodemustubs$(LIBSUFFIX)
257  endif
258endif
259
260ifeq ($(PLATFORM), PRE_RVL)
261  ifdef NDEV
262    EPPCMWLIBS   += $(NDEVDIR)/../lib/NdevExi2$(LIBSUFFIX) -lodenotstub$(LIBSUFFIX)
263  else
264    ifdef ODEMUSDKBIN
265      EPPCMWLIBS   += $(ODEDIR)/../lib/odemuexi2.a -lodenotstub$(LIBSUFFIX)
266    else # not (NDEV and GDEV)
267      EPPCMWLIBS   += -lodemustubs$(LIBSUFFIX)
268    endif
269  endif
270
271  ifdef AMCDDKBIN
272    EPPCMWLIBS   += $(AMCDIR)/../lib/AmcExi2.a -lamcnotstub$(LIBSUFFIX)
273  else
274    EPPCMWLIBS   += -lamcstubs$(LIBSUFFIX)
275  endif
276endif
277
278ifeq ($(PLATFORM), RVL_EMU)
279  ifdef NDEV
280    EPPCMWLIBS   += $(NDEVDIR)/../lib/NdevExi2$(LIBSUFFIX) -lodenotstub$(LIBSUFFIX)
281  else
282    ifdef ODEMUSDKBIN
283      EPPCMWLIBS   += $(ODEDIR)/../lib/odemuexi2.a -lodenotstub$(LIBSUFFIX)
284    else # not (NDEV and GDEV)
285      EPPCMWLIBS   += -lodemustubs$(LIBSUFFIX)
286    endif
287  endif
288
289  ifdef AMCDDKBIN
290    EPPCMWLIBS   += $(AMCDIR)/../lib/AmcExi2.a -lamcnotstub$(LIBSUFFIX)
291  else
292    EPPCMWLIBS   += -lamcstubs$(LIBSUFFIX)
293  endif
294endif
295
296
297CCFLAGS      += -DTRK_INTEGRATION
298
299endif # TRK_INTEGRATION
300
301# NOTE: If editing REVOLUTION_LIBS, ensure that the library you're adding is
302#       also built by the top-level makefile (/dolphin/build/makefile)
303#       for this target (EPPC)
304
305# We use full paths so that we can depend on $( REVOLUTION_LIBS)
306# libsn.a will be prepended to link line to override __start
307
308REVOLUTION_LIBS =   $(INSTALL_ROOT)/lib/base$(LIBSUFFIX)  \
309                    $(INSTALL_ROOT)/lib/os$(LIBSUFFIX)    \
310                    $(INSTALL_ROOT)/lib/exi$(LIBSUFFIX)   \
311                    $(INSTALL_ROOT)/lib/si$(LIBSUFFIX)    \
312                    $(INSTALL_ROOT)/lib/db$(LIBSUFFIX)    \
313                    $(INSTALL_ROOT)/lib/vi$(LIBSUFFIX)    \
314                    $(INSTALL_ROOT)/lib/mtx$(LIBSUFFIX)   \
315                    $(INSTALL_ROOT)/lib/gx$(LIBSUFFIX)    \
316                    $(INSTALL_ROOT)/lib/dvd$(LIBSUFFIX)   \
317                    $(INSTALL_ROOT)/lib/demo$(LIBSUFFIX)  \
318                    $(INSTALL_ROOT)/lib/ai$(LIBSUFFIX)    \
319                    $(INSTALL_ROOT)/lib/ax$(LIBSUFFIX)    \
320                    $(INSTALL_ROOT)/lib/axfx$(LIBSUFFIX)  \
321                    $(INSTALL_ROOT)/lib/mem$(LIBSUFFIX)   \
322                    $(INSTALL_ROOT)/lib/cx$(LIBSUFFIX)    \
323                    $(INSTALL_ROOT)/lib/mix$(LIBSUFFIX)   \
324                    $(INSTALL_ROOT)/lib/sp$(LIBSUFFIX)    \
325                    $(INSTALL_ROOT)/lib/axart$(LIBSUFFIX) \
326                    $(INSTALL_ROOT)/lib/syn$(LIBSUFFIX)   \
327                    $(INSTALL_ROOT)/lib/seq$(LIBSUFFIX)   \
328                    $(INSTALL_ROOT)/lib/dsp$(LIBSUFFIX)   \
329                    $(INSTALL_ROOT)/lib/card$(LIBSUFFIX)  \
330                    $(INSTALL_ROOT)/lib/hio2$(LIBSUFFIX)  \
331                    $(INSTALL_ROOT)/lib/nand$(LIBSUFFIX)  \
332                    $(INSTALL_ROOT)/lib/sc$(LIBSUFFIX)    \
333                    $(INSTALL_ROOT)/lib/wenc$(LIBSUFFIX)  \
334                    $(INSTALL_ROOT)/lib/enc$(LIBSUFFIX)	  \
335		    $(INSTALL_ROOT)/lib/arc$(LIBSUFFIX)   \
336                    $(INSTALL_ROOT)/lib/esp$(LIBSUFFIX)	  \
337#					$(INSTALL_ROOT)/lib/cnt$(LIBSUFFIX)   \
338#                     $(INSTALL_ROOT)/lib/mcc$(LIBSUFFIX)   \
339#                     $(INSTALL_ROOT)/lib/hio$(LIBSUFFIX)   \
340
341#######################################################################
342#   Libraries available with existence of IO processor firmware
343#######################################################################
344# 11-Mar-06 IPC lib was activated for all IO processor available targets.
345
346ifdef IOP_REV
347REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/ipc$(LIBSUFFIX) \
348                    $(INSTALL_ROOT)/lib/fs$(LIBSUFFIX)
349else
350REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/isfsEmu$(LIBSUFFIX) \
351                    $(INSTALL_ROOT)/lib/sdwp$(LIBSUFFIX)
352endif
353
354ifdef HOLLYWOOD_REV
355else
356REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/ipcRegEmu$(LIBSUFFIX)
357endif
358
359
360########################################################################
361# Conditionals for list of REVOLUTION libraries. Because when you care
362# enough to emulate...
363########################################################################
364
365#
366# 20-Jan-06 The fabled WK library. For emulation platforms ONLY. @EUG
367#
368ifeq ($(PLATFORM), RVL_EMU)
369REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/wk$(LIBSUFFIX)
370endif
371
372# 29-Jan-06 We will keep ARAM around for RVL_EMU and PRE_RVL targets (so sound can work).
373#           This means we must get rid of ARAM (and related libraries) for real HOLLYWOOD. @EUG
374#
375ifndef HOLLYWOOD_REV
376REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/ar$(LIBSUFFIX) \
377                    $(INSTALL_ROOT)/lib/am$(LIBSUFFIX)
378endif
379
380#
381# 06-Feb-06 If in RVL_EMU environment, DIEMU API is called from DVD lib.
382#
383ifndef DI_DIRECT
384ifdef IOP_EMU
385REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/diemu$(LIBSUFFIX) \
386                    $(INSTALL_ROOT)/lib/wk$(LIBSUFFIX) \
387                    $(INSTALL_ROOT)/lib/wkmc$(LIBSUFFIX)
388endif # IOP_EMU
389endif # DI_DIRECT
390
391
392#
393# 07-Feb-06 For backward compatibility. @EUG
394# 17-May-06 Added preprocessor macro WPADEMU.
395# 16-Jun-06 Added KPAD/KPADEmu/wireless WPAD libraries.
396#
397ifndef WPADEMU_LIB
398REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/pad$(LIBSUFFIX)
399REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/wpad$(LIBSUFFIX)
400REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/kpad$(LIBSUFFIX)
401else # we're using the emulated WPAD library
402REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/padempty$(LIBSUFFIX)
403REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/wpadEmu$(LIBSUFFIX)
404REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/kpadEmu$(LIBSUFFIX)
405CCFLAGS         += -DWPADEMU
406endif
407
408# 22-Feb-06 To enable Mr.EXI serial report output.
409#
410ifdef HOLLYWOOD_REV
411REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/euart$(LIBSUFFIX)
412endif
413
414# 16-Jun-06 USB and wireless UI.
415#
416REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/usb$(LIBSUFFIX) \
417                    $(INSTALL_ROOT)/lib/wud$(LIBSUFFIX) \
418                    $(INSTALL_ROOT)/lib/bte$(LIBSUFFIX)
419
420
421LINCLUDES   = -I$(MODULE_ROOT)/include
422
423# -i- delimits user paths from system paths.
424# By default, the only user path points to the local include tree.
425GINCLUDES   = -I$(INC_ROOT)         \
426              -ir $(MWDIR)/PowerPC_EABI_Support/Msl/Msl_c \
427              -I$(MWDIR)/PowerPC_EABI_Support/Runtime/Inc
428INCLUDES    = $(LINCLUDES) -i- $(GINCLUDES)
429
430LIB_PATH    = -L$(INSTALL_ROOT)/lib
431
432# -map              - create a .MAP file that shows final memory layout of
433#                     all sections
434# -unused           - show unused symbols
435# -fp hardware      - linker must use same fp settings as compiler
436# Note that LDFLAGS automagically includes the required Metrowerks library
437LDFLAGS += $(LIB_PATH) -fp hardware $(EPPCMWLIBS)
438REL_LDFLAGS    += -fp hardware
439PREREL_LDFLAGS += -fp hardware
440
441ifdef COUNTRY_REGION
442REGION_SUFFIX ?= _$(COUNTRY_REGION)
443else
444REGION_SUFFIX ?=
445endif
446
447ifdef DEBUG
448LIBSUFFIX    = D.a
449BINSUFFIX    = D.elf
450DOLSUFFIX    = D.dol
451PLFSUFFIX    = D.plf
452PREPLFSUFFIX = D.preplf
453RELSUFFIX    = D.rel
454STRSUFFIX    = D.str
455LCFSUFFIX    = D.lcf
456LSTSUFFIX    = D.lst
457WADSUFFIX	 = D.wad
458ASUFFIX		 = D
459MCHSUFFIX    = D.mch
460else # DEBUG
461LIBSUFFIX    = .a
462BINSUFFIX    = .elf
463DOLSUFFIX    = .dol
464PLFSUFFIX    = .plf
465PREPLFSUFFIX = .preplf
466RELSUFFIX    = .rel
467STRSUFFIX    = .str
468LCFSUFFIX    = .lcf
469LSTSUFFIX    = .lst
470WADSUFFIX	 = .wad
471ASUFFIX		 =
472MCHSUFFIX    = .mch
473endif # DEBUG
474
475DEPSUFFIX    = .d
476LZ77SUFFIX   = .lz7
477
478CC           = $(MWCLDIR)/mwcceppc.exe
479AS           = $(MWCLDIR)/mwasmeppc.exe
480LD           = $(MWCLDIR)/mwldeppc.exe
481AR           = $(MWCLDIR)/mwldeppc.exe
482COMPILE      = -c
483
484# New 2007/10/17
485ifdef NANDAPP
486CCFLAGS += -DNANDAPP
487endif
488
489# New 2006/02/15
490ifdef RVL_OS
491CCFLAGS      += -DRVL_OS
492ASFLAGS      += -DRVL_OS
493endif # RVL_OS
494
495ifdef EPPC
496CCFLAGS      += -DEPPC
497ASFLAGS      += -DEPPC
498endif # EPPC
499
500ifeq ($(PROCESSOR), gekko)
501GEKKO        =  TRUE
502CCFLAGS      += -DGEKKO
503ASFLAGS      += -DGEKKO
504endif # gekko
505
506# New Code 2005/12/16
507ifdef HOLLYWOOD_REV
508CCFLAGS      += -DHOLLYWOOD_REV=$(HOLLYWOOD_REV)
509ASFLAGS      += -DHOLLYWOOD_REV=$(HOLLYWOOD_REV)
510endif # HOLLYWOOD_REV
511
512ifdef BROADWAY_REV
513CCFLAGS      += -DBROADWAY_REV=$(BROADWAY_REV)
514ASFLAGS      += -DBROADWAY_REV=$(BROADWAY_REV)
515endif # BROADWAY_REV
516
517ifdef IOP_REV
518CCFLAGS      += -DIOP_REV=$(IOP_REV)
519ASFLAGS      += -DIOP_REV=$(IOP_REV)
520endif # IOP_REV
521
522# for RVL_EMU
523ifdef HOLLYWOOD_EMU
524CCFLAGS      += -DHOLLYWOOD_EMU
525ASFLAGS      += -DHOLLYWOOD_EMU
526endif # HOLLYWOOD_EMU
527
528ifdef BROADWAY_EMU
529CCFLAGS      += -DBROADWAY_EMU
530ASFLAGS      += -DBROADWAY_EMU
531endif # BROADWAY_EMU
532
533ifdef IOP_EMU
534CCFLAGS      += -DIOP_EMU
535ASFLAGS      += -DIOP_EMU
536endif # IOP_EMU
537
538ifdef DI_DIRECT
539CCFLAGS      += -DDI_DIRECT
540ASFLAGS      += -DDI_DIRECT
541endif # DI_DIRECT
542
543ifdef NO_AHBPI_DSEA
544CCFLAGS      += -DNO_AHBPI_DSEA
545ASFLAGS      += -DNO_AHBPI_DSEA
546endif # NO_AHBPI_DSEA
547
548###############################################################################
549#
550#    Dolphin SDK build configuration settings
551#    This section can be skipped by defining DOLPHIN_MINFLAGS for building
552#    application program.
553#
554###############################################################################
555
556ifndef DOLPHIN_MINFLAGS
557
558#
559# for CodeWarror
560#
561# Reduced warning level from "ALL" to "MOST", got rid of
562# intercapping complaints in header filenames.
563#
564CCFLAGS += -W all -W nofilecaps -W nosysfilecaps
565
566WARNLV_SDKINC   = -W padding,notused
567WARNLV_SDKLIB   =
568
569LDFLAGS += -unused -map ${@:.elf=.map}
570REL_LDFLAGS    += -unused -map ${@:.plf=.map} -m _prolog -r1 -strip_partial
571PREREL_LDFLAGS += -unused -map ${@:.preplf=.premap} -m _prolog -r
572
573# debug related flags
574ifdef DEBUG
575# -opt off          - The debugger is very unhappy with any optimizations at all.
576# -inline off       - disable all inlining
577CCFLAGS += -opt off -inline off
578
579#
580# make DEBUG=TRUE NDEBUGINFO=TRUE
581#  for DEBUG lib without debug information
582#
583ifndef  NDEBUGINFO
584# -g                - generate full debug symbolics
585LDFLAGS += -g
586CCFLAGS += -g
587ASFLAGS += -g
588REL_LDFLAGS    += -g
589PREREL_LDFLAGS +=
590endif
591
592else  # DEBUG
593# -O4,p             - full optimizations, optimize for speed (not code size)
594# -inline auto      - inline small functions where possible,
595#                     even without inline directirve
596# -unused           - show unused symbols
597CCFLAGS += -ipa file -O4,p -inline auto -pragma "warn_notinlined off"
598ASFLAGS +=
599
600#
601# make NDEBUG=TRUE DEBUGINFO=TRUE
602#  for NDEBUG lib with debug information
603#
604ifdef   DEBUGINFO
605LDFLAGS     += -g
606CCFLAGS     += -g
607ASFLAGS     += -g
608REL_LDFLAGS += -g
609PREREL_LDFLAGS  +=
610endif # DEBUGINFO
611
612endif # DEBUG
613
614endif  #DOLPHIN_MINFLAGS
615
616
617###############################################################################
618#
619#    Dolphin configuration settings
620#    This section is only for Nintendo internal use.
621#
622###############################################################################
623
624# if REALDEBUGGER is TRUE, then DBInit will not initialize the low memory
625# structure
626REALDEBUGGER    = TRUE
627
628###############################################################################
629#
630#    Precompile header
631#
632###############################################################################
633
634ifdef USE_PRECOMPILE_HEADER
635
636PREFIX_FILE = -include private/revolution$(MCHSUFFIX)
637
638else
639
640# PREFIX_FILE = -include revolution.h
641PREFIX_FILE =
642
643endif
644
645
646