1#----------------------------------------------------------------------------
2# Project:  Horizon
3# File:     CTR.commondefs.om
4#
5# Copyright (C)2009-2011 Nintendo Co., Ltd.  All rights reserved.
6#
7# These coded instructions, statements, and computer programs contain
8# proprietary information of Nintendo of America Inc. and/or Nintendo
9# Company Ltd., and are protected by Federal copyright law.  They may
10# not be disclosed to third parties or copied or duplicated in any form,
11# in whole or in part, without the prior written consent of Nintendo.
12#
13# $Rev: 47349 $
14#----------------------------------------------------------------------------
15
16#----------------------------------------------------------------------------
17# Global constant definition
18#----------------------------------------------------------------------------
19
20# Application type setting
21
22global.APPTYPE_CARD     = CARD
23global.APPTYPE_NAND     = NAND
24global.APPTYPE_SD       = SD
25global.APPTYPE_IMPORT   = IMPORT
26global.APPTYPE_BOTH     = BOTH
27global.APPTYPE_LIST     = LIST
28global.APPTYPE_PATCH    = PATCH
29
30global.CTR_APPTYPE = $(APPTYPE_CARD)
31
32
33
34# Extension settings
35
36global.EXT_CCI          = .cci
37global.EXT_CXI          = .cxi
38global.EXT_CIA          = .cia
39global.EXT_CFA          = .cfa
40global.EXT_BANNER       = .bnr
41global.EXT_ICON         = .icn
42global.EXT_CCL          = .ccl
43global.EXT_CCL_E        = .e.bin
44global.EXT_CCL_R        = .r.bin
45private.EXT_EDIT        = .edit
46private.EXT_RO          = .cro
47private.EXT_RLT         = .cro.rlt
48private.EXT_RR          = .crr
49private.EXT_RS          = .crs
50private.EXT_XRL         = .xrl
51private.EXT_UAE         = .uae
52private.EXT_FIL         = .fil
53private.EXT_ELF2        = .axg
54
55
56# Tool path setting
57
58global.MAKEROM          = $(ROOT_COMMANDS)$(DIRSEP)ctr_makerom32.exe
59global.MAKECIA          = $(ROOT_COMMANDS)$(DIRSEP)ctr_makecia32.exe
60global.MAKEBANNER       = $(ROOT_COMMANDS)$(DIRSEP)ctr_makebanner32.exe
61global.MAKECIAARCHIVE   = $(ROOT_COMMANDS)$(DIRSEP)ctr_makeciaarchive32.exe
62private.MAKECRO         = $(makePath $(ROOT_COMMANDS) ctr_makecro32.exe)
63private.MAKECRR         = $(makePath $(ROOT_COMMANDS) ctr_makecrr32.exe)
64private.FROMELF         = $(makePath $(RVCT_BINDIR) fromelf.exe)
65global.MAKEMETADATACONTENT = $(ROOT_COMMANDS)$(DIRSEP)ctr_makeMetaDataContent32.exe
66
67
68global.MAKEROMFLAGS     =
69global.MAKECIAFLAGS     =
70
71
72global.ROM_SPEC_FILE    = $(makePath $(ROOT_RESOURCES) specfiles Application.rsf)
73
74global.BUILD_APPLICATION    = false
75global.BUILD_KERNEL         = false
76
77global.DEFAULT_FILTER = CTR-TS*MPCore*
78
79private.ORIGINAL_Elf = $(Elf)
80private.ORIGINAL_ExecutableElf = $(ExecutableElf)
81
82public.ELF_FLAGS_HOOK = $(EMPTY)
83
84# SYMBOL/INDEX/OFFSET
85public.MODULE_EXPORT_TYPE   =   SYMBOL
86
87# DEFAULT/RSO/REL/PLUGIN/LIBRARY
88public.MODULE_BUILD_TYPE    =   DEFAULT
89public.MODULE_ENABLE_OFFSET =   true
90public.MODULE_CUSTOM_XRL    =   $(EMPTY)
91public.MODULE_ADD_DEBUG_INFO    =   true
92
93
94if $(not $(defined TRACE_PRODUCTCODE))
95    global.TRACE_PRODUCTCODE =
96    export
97
98
99
100
101
102include $(makePlatformDefsPath commondefs.func)
103include $(makePlatformDefsPath commondefs.gl)
104
105#Load test rules
106if $(test -f $(makePlatformDefsPath commondefs.test))
107    include $(makePlatformDefsPath commondefs.test)
108    export
109
110
111
112global.PROGRAM_BUILDER_MAP = $(Map)
113
114PROGRAM_BUILDER_MAP = $(PROGRAM_BUILDER_MAP.add $(APPTYPE_CARD),$(ProgramCard))
115PROGRAM_BUILDER_MAP = $(PROGRAM_BUILDER_MAP.add $(APPTYPE_LIST),$(ProgramList))
116PROGRAM_BUILDER_MAP = $(PROGRAM_BUILDER_MAP.add $(APPTYPE_NAND),$(ProgramImport))
117PROGRAM_BUILDER_MAP = $(PROGRAM_BUILDER_MAP.add $(APPTYPE_SD),$(ProgramImport))
118PROGRAM_BUILDER_MAP = $(PROGRAM_BUILDER_MAP.add $(APPTYPE_IMPORT),$(ProgramImport))
119PROGRAM_BUILDER_MAP = $(PROGRAM_BUILDER_MAP.add $(APPTYPE_PATCH),$(ProgramPatch))
120
121
122public.HORIZON_ADDITIONAL_RULES +=
123    fun()
124        export DEFAULT_TARGETS
125        SHADER_BINARY = $(EMPTY)
126        export SHADER_BINARY
127
128        # The full path of the vertex shader object file generated from .vsh is stored.
129        if $(not $(defined SHADER_OBJECTS))
130            SHADER_OBJECTS =
131            export SHADER_OBJECTS
132        export SHADER_OBJECTS
133
134        # The path to the built vertex shader object file is stored as a relative path from resources/shaders.
135        if $(not $(defined SHADER_OBJECTS_PREBUILT))
136            SHADER_OBJECTS_PREBUILT =
137            export SHADER_OBJECTS_PREBUILT
138        export SHADER_OBJECTS_PREBUILT
139
140        # The vertex shader source file (.vsh) is stored
141        if $(defined SHADER_SOURCES)
142            # Assemble the specified source file with SHADER_SOURCES in OMakefile, and get the full path to the .obj file
143            #
144            SHADER_OBJECTS = $(VertexShaderObjects $(SHADER_SOURCES), $(SHADER_ASFLAGS)) $(SHADER_OBJECTS)
145
146            # If the shader binary name is not specified, use the default
147            if $(not $(defined TARGET_SHADER))
148                TARGET_SHADER = shader
149                export
150
151            # Check whether the shader binary name was explicitly made a blank
152            if $(TARGET_SHADER)
153                # Link the object generated with OMakefile to a built object
154                # Also copy the binary to under ROMFS_ROOT as necessary
155                SHADER_BINARY = $(VertexShaderBinary $(TARGET_SHADER), $(SHADER_OBJECTS), $(SHADER_OBJECTS_PREBUILT), $(SHADER_LDFLAGS))
156                DEFAULT_TARGETS += $(SHADER_BINARY)
157            else
158                # If explicitly made blank, it is not linked
159                DEFAULT_TARGETS += $(SHADER_OBJECTS)
160
161        if $(defined CTR_BANNER_SPEC)
162            foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
163                DEFAULT_TARGETS += $(Banner $(TARGET), $(CTR_BANNER_SPEC))
164
165
166public.HORIZON_ADDITIONAL_RULES +=
167    fun()
168        export DEFAULT_TARGETS
169        export ExecutableElf
170        export Elf
171
172        ExecutableElf = $(ExecutableElfUsingRo)
173        Elf           = $(ElfUsingRo)
174
175        if $(defined TARGET_MODULE)
176            foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
177                private.list2nd =
178                    if $(IsModuleListValid)
179                        value $(if $(defined MODULE_LIST),$`(CollectXrl2nd $(TARGET), $`(MODULE_LIST))) $(if $(defined MODULE_LIST_XRL),$`(MODULE_LIST_XRL))
180                    else
181                        value $(EMPTY)
182                private.list4th =
183                    if $(IsModuleListValid)
184                        value $(if $(defined MODULE_LIST),$`(CollectXrl4th $(TARGET), $`(MODULE_LIST))) $(if $(defined MODULE_LIST_XRL),$`(MODULE_LIST_XRL))
185                    else
186                        value $(EMPTY)
187                private.flags = $(GetExportTypeOption $(MODULE_EXPORT_TYPE))
188                DEFAULT_TARGETS += $(BuildRo $(TARGET), $(TARGET_MODULE), $(SOURCES) $(OBJECTS), $(list2nd), $(list4th), $(flags))
189
190        if $(defined TARGET_PROGRAM)
191            foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
192                if $(IsModuleListDefined)
193                    private.axf     = $(file $(TARGET.getImageDirectory false)/$(TARGET_PROGRAM).axf)
194                    private.xrl3rd  = $(file $(TARGET.getImageDirectory false)/$(TARGET_PROGRAM).3.xrl)
195                    private.list4th =
196                        if $(IsModuleListValid)
197                            value $(if $(defined MODULE_LIST),$`(CollectXrl4th $(TARGET), $`(MODULE_LIST))) $(if $(defined MODULE_LIST_XRL),$`(MODULE_LIST_XRL))
198                        else
199                            value $(EMPTY)
200                    if $(IsModuleListValid)
201                        DEFAULT_TARGETS += $(BuildRr $(TARGET), $(TARGET_PROGRAM), $(MODULE_LIST), $(MODULE_ADD_DEBUG_INFO))
202                    DEFAULT_TARGETS += $(BuildRs $(TARGET), $(TARGET_PROGRAM), $(axf), $(xrl3rd), $(list4th))
203
204        if $(defined TARGET_CRR)
205            foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
206                DEFAULT_TARGETS += $(BuildRr $(TARGET), $(TARGET_CRR), $(MODULE_LIST), $(MODULE_ADD_DEBUG_INFO))
207
208