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/hio2$(LIBSUFFIX)  \
330                    $(INSTALL_ROOT)/lib/nand$(LIBSUFFIX)  \
331                    $(INSTALL_ROOT)/lib/sc$(LIBSUFFIX)    \
332                    $(INSTALL_ROOT)/lib/wenc$(LIBSUFFIX)  \
333                    $(INSTALL_ROOT)/lib/enc$(LIBSUFFIX)	  \
334                    $(INSTALL_ROOT)/lib/arc$(LIBSUFFIX)   \
335                    $(INSTALL_ROOT)/lib/darch$(LIBSUFFIX)   \
336                    $(INSTALL_ROOT)/lib/esp$(LIBSUFFIX)	  \
337                    $(INSTALL_ROOT)/lib/midi$(LIBSUFFIX)  \
338
339#                    $(INSTALL_ROOT)/lib/cnt$(LIBSUFFIX)   \
340#                    $(INSTALL_ROOT)/lib/mcc$(LIBSUFFIX)   \
341#                    $(INSTALL_ROOT)/lib/hio$(LIBSUFFIX)   \
342
343#######################################################################
344#   Libraries available with existence of IO processor firmware
345#######################################################################
346# 11-Mar-06 IPC lib was activated for all IO processor available targets.
347
348ifdef IOP_REV
349REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/ipc$(LIBSUFFIX) \
350                    $(INSTALL_ROOT)/lib/fs$(LIBSUFFIX)
351else
352REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/isfsEmu$(LIBSUFFIX) \
353                    $(INSTALL_ROOT)/lib/sdwp$(LIBSUFFIX)
354endif
355
356ifdef HOLLYWOOD_REV
357else
358REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/ipcRegEmu$(LIBSUFFIX)
359endif
360
361
362########################################################################
363# Conditionals for list of REVOLUTION libraries. Because when you care
364# enough to emulate...
365########################################################################
366
367#
368# 20-Jan-06 The fabled WK library. For emulation platforms ONLY. @EUG
369#
370ifeq ($(PLATFORM), RVL_EMU)
371REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/wk$(LIBSUFFIX)
372endif
373
374# 29-Jan-06 We will keep ARAM around for RVL_EMU and PRE_RVL targets (so sound can work).
375#           This means we must get rid of ARAM (and related libraries) for real HOLLYWOOD. @EUG
376#
377ifndef HOLLYWOOD_REV
378REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/ar$(LIBSUFFIX) \
379                    $(INSTALL_ROOT)/lib/am$(LIBSUFFIX)
380endif
381
382#
383# 06-Feb-06 If in RVL_EMU environment, DIEMU API is called from DVD lib.
384#
385ifndef DI_DIRECT
386ifdef IOP_EMU
387REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/diemu$(LIBSUFFIX) \
388                    $(INSTALL_ROOT)/lib/wk$(LIBSUFFIX) \
389                    $(INSTALL_ROOT)/lib/wkmc$(LIBSUFFIX)
390endif # IOP_EMU
391endif # DI_DIRECT
392
393
394#
395# 07-Feb-06 For backward compatibility. @EUG
396# 17-May-06 Added preprocessor macro WPADEMU.
397# 16-Jun-06 Added KPAD/KPADEmu/wireless WPAD libraries.
398#
399ifndef WPADEMU_LIB
400REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/pad$(LIBSUFFIX)
401REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/wpad$(LIBSUFFIX)
402REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/kpad$(LIBSUFFIX)
403else # we're using the emulated WPAD library
404REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/padempty$(LIBSUFFIX)
405REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/wpadEmu$(LIBSUFFIX)
406REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/kpadEmu$(LIBSUFFIX)
407CCFLAGS         += -DWPADEMU
408endif
409
410# 22-Feb-06 To enable Mr.EXI serial report output.
411#
412ifdef HOLLYWOOD_REV
413REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/euart$(LIBSUFFIX)
414endif
415
416# 16-Jun-06 USB and wireless UI.
417#
418REVOLUTION_LIBS +=  $(INSTALL_ROOT)/lib/usb$(LIBSUFFIX) \
419                    $(INSTALL_ROOT)/lib/wud$(LIBSUFFIX) \
420                    $(INSTALL_ROOT)/lib/bte$(LIBSUFFIX)
421
422
423LINCLUDES   = -I$(MODULE_ROOT)/include
424
425# -i- delimits user paths from system paths.
426# By default, the only user path points to the local include tree.
427GINCLUDES   = -I$(INC_ROOT)         \
428              -ir $(MWDIR)/PowerPC_EABI_Support/Msl/Msl_c \
429              -I$(MWDIR)/PowerPC_EABI_Support/Runtime/Inc
430INCLUDES    = $(LINCLUDES) -i- $(GINCLUDES)
431
432LIB_PATH    = -L$(INSTALL_ROOT)/lib
433
434# -map              - create a .MAP file that shows final memory layout of
435#                     all sections
436# -unused           - show unused symbols
437# -fp hardware      - linker must use same fp settings as compiler
438# Note that LDFLAGS automagically includes the required Metrowerks library
439LDFLAGS += $(LIB_PATH) -fp hardware $(EPPCMWLIBS)
440REL_LDFLAGS    += -fp hardware
441PREREL_LDFLAGS += -fp hardware
442
443ifdef COUNTRY_REGION
444REGION_SUFFIX ?= _$(COUNTRY_REGION)
445else
446REGION_SUFFIX ?=
447endif
448
449ifdef DEBUG
450LIBSUFFIX    = D.a
451BINSUFFIX    = D.elf
452DOLSUFFIX    = D.dol
453PLFSUFFIX    = D.plf
454PREPLFSUFFIX = D.preplf
455RELSUFFIX    = D.rel
456STRSUFFIX    = D.str
457LCFSUFFIX    = D.lcf
458LSTSUFFIX    = D.lst
459WADSUFFIX	 = D.wad
460ASUFFIX		 = D
461MCHSUFFIX    = D.mch
462LZ77SUFFIX   = D.lz7
463else # DEBUG
464LIBSUFFIX    = .a
465BINSUFFIX    = .elf
466DOLSUFFIX    = .dol
467PLFSUFFIX    = .plf
468PREPLFSUFFIX = .preplf
469RELSUFFIX    = .rel
470STRSUFFIX    = .str
471LCFSUFFIX    = .lcf
472LSTSUFFIX    = .lst
473WADSUFFIX	 = .wad
474ASUFFIX		 =
475MCHSUFFIX    = .mch
476LZ77SUFFIX   = .lz7
477endif # DEBUG
478
479DEPSUFFIX    = .d
480
481CC           = $(MWCLDIR)/mwcceppc.exe
482AS           = $(MWCLDIR)/mwasmeppc.exe
483LD           = $(MWCLDIR)/mwldeppc.exe
484AR           = $(MWCLDIR)/mwldeppc.exe
485COMPILE      = -c
486
487# New 2007/10/17
488ifdef NANDAPP
489CCFLAGS += -DNANDAPP
490endif
491
492# New 2006/02/15
493ifdef RVL_OS
494CCFLAGS      += -DRVL_OS
495ASFLAGS      += -DRVL_OS
496endif # RVL_OS
497
498ifdef EPPC
499CCFLAGS      += -DEPPC
500ASFLAGS      += -DEPPC
501endif # EPPC
502
503ifeq ($(PROCESSOR), gekko)
504GEKKO        =  TRUE
505CCFLAGS      += -DGEKKO
506ASFLAGS      += -DGEKKO
507endif # gekko
508
509# New Code 2005/12/16
510ifdef HOLLYWOOD_REV
511CCFLAGS      += -DHOLLYWOOD_REV=$(HOLLYWOOD_REV)
512ASFLAGS      += -DHOLLYWOOD_REV=$(HOLLYWOOD_REV)
513endif # HOLLYWOOD_REV
514
515ifdef BROADWAY_REV
516CCFLAGS      += -DBROADWAY_REV=$(BROADWAY_REV)
517ASFLAGS      += -DBROADWAY_REV=$(BROADWAY_REV)
518endif # BROADWAY_REV
519
520ifdef IOP_REV
521CCFLAGS      += -DIOP_REV=$(IOP_REV)
522ASFLAGS      += -DIOP_REV=$(IOP_REV)
523endif # IOP_REV
524
525# for RVL_EMU
526ifdef HOLLYWOOD_EMU
527CCFLAGS      += -DHOLLYWOOD_EMU
528ASFLAGS      += -DHOLLYWOOD_EMU
529endif # HOLLYWOOD_EMU
530
531ifdef BROADWAY_EMU
532CCFLAGS      += -DBROADWAY_EMU
533ASFLAGS      += -DBROADWAY_EMU
534endif # BROADWAY_EMU
535
536ifdef IOP_EMU
537CCFLAGS      += -DIOP_EMU
538ASFLAGS      += -DIOP_EMU
539endif # IOP_EMU
540
541ifdef DI_DIRECT
542CCFLAGS      += -DDI_DIRECT
543ASFLAGS      += -DDI_DIRECT
544endif # DI_DIRECT
545
546ifdef NO_AHBPI_DSEA
547CCFLAGS      += -DNO_AHBPI_DSEA
548ASFLAGS      += -DNO_AHBPI_DSEA
549endif # NO_AHBPI_DSEA
550
551###############################################################################
552#
553#    Dolphin SDK build configuration settings
554#    This section can be skipped by defining DOLPHIN_MINFLAGS for building
555#    application program.
556#
557###############################################################################
558
559ifndef DOLPHIN_MINFLAGS
560
561#
562# for CodeWarror
563#
564# Reduced warning level from "ALL" to "MOST", got rid of
565# intercapping complaints in header filenames.
566#
567CCFLAGS += -W all -W nofilecaps -W nosysfilecaps
568
569WARNLV_SDKINC   = -W padding,notused
570WARNLV_SDKLIB   =
571
572LDFLAGS += -unused -map ${@:.elf=.map}
573REL_LDFLAGS    += -unused -map ${@:.plf=.map} -m _prolog -r1 -strip_partial
574PREREL_LDFLAGS += -unused -map ${@:.preplf=.premap} -m _prolog -r
575
576# debug related flags
577ifdef DEBUG
578# -opt off          - The debugger is very unhappy with any optimizations at all.
579# -inline off       - disable all inlining
580CCFLAGS += -opt off -inline off
581
582#
583# make DEBUG=TRUE NDEBUGINFO=TRUE
584#  for DEBUG lib without debug information
585#
586ifndef  NDEBUGINFO
587# -gdwarf-2                - generate full debug symbolics
588LDFLAGS += -gdwarf-2
589CCFLAGS += -gdwarf-2
590ASFLAGS += -gdwarf-2
591REL_LDFLAGS    += -gdwarf-2
592PREREL_LDFLAGS +=
593endif
594
595else  # DEBUG
596# -O4,p             - full optimizations, optimize for speed (not code size)
597# -inline auto      - inline small functions where possible,
598#                     even without inline directirve
599# -unused           - show unused symbols
600CCFLAGS += -ipa file -O4,p -inline auto -pragma "warn_notinlined off"
601ASFLAGS +=
602
603#
604# make NDEBUG=TRUE DEBUGINFO=TRUE
605#  for NDEBUG lib with debug information
606#
607ifdef   DEBUGINFO
608LDFLAGS     += -gdwarf-2
609CCFLAGS     += -gdwarf-2
610ASFLAGS     += -gdwarf-2
611REL_LDFLAGS += -gdwarf-2
612PREREL_LDFLAGS  +=
613endif # DEBUGINFO
614
615endif # DEBUG
616
617endif  #DOLPHIN_MINFLAGS
618
619
620###############################################################################
621#
622#    Dolphin configuration settings
623#    This section is only for Nintendo internal use.
624#
625###############################################################################
626
627# if REALDEBUGGER is TRUE, then DBInit will not initialize the low memory
628# structure
629REALDEBUGGER    = TRUE
630
631###############################################################################
632#
633#    Precompile header
634#
635###############################################################################
636
637ifdef USE_PRECOMPILE_HEADER
638
639PREFIX_FILE = -include private/revolution$(MCHSUFFIX)
640
641else
642
643# PREFIX_FILE = -include revolution.h
644PREFIX_FILE =
645
646endif
647
648
649