1############################################################################### 2# Top level makefile for build system 3# 4# Copyright 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# Valid targets 14# "make" by itself builds and installs everything listed in LIBS, DEMOS and 15# TESTS. Default target is HW1 DEBUG 16# "make clean" cleans everything listed in LIBS, DEMOS and 17# TESTS. Only MACOS DEBUG versions are cleaned 18# "make NDEBUG=TRUE" builds non-debug versions. 19# "make NDEBUG=TRUE clean" cleans only non-debug versions. 20 21include buildtools/commondefs 22 23############################################################################### 24# Dependencies 25############################################################################### 26 27# THE ORDER OF THE LIBRARIES LISTED IS ALSO THE LIBRARY BUILD ORDER 28 29# XXX All libraries that are included in commondefs->REVOLUTION_LIBS must be listed 30# XXX here under $(LIBS), or else executables will fail to link 31 32ifdef EPPC 33################### 34# EPPC BUILDS 35################### 36LIBS = ai \ 37 amcnotstub \ 38 amcstubs \ 39 odemustubs \ 40 odenotstub \ 41 ax \ 42 base \ 43 card \ 44 cx \ 45 db \ 46 dsp \ 47 dvd \ 48 exi \ 49 fa \ 50 gx \ 51 kpad \ 52 kpadOld \ 53 mem \ 54 midi \ 55 mtx \ 56 os \ 57 pad \ 58 si \ 59 vi \ 60 wpad \ 61 G2D \ 62 axart \ 63 axfx \ 64 demo \ 65 gd \ 66 mix \ 67 perf \ 68 sample \ 69 seq \ 70 sp \ 71 syn \ 72 thp \ 73 tpl \ 74 nand \ 75 sc \ 76 euart \ 77 ipc \ 78 hio2 \ 79 sdi \ 80 socket \ 81 usb \ 82 arc \ 83 dvdvideo \ 84 wud \ 85 bte \ 86 cx \ 87 enc \ 88 cnt \ 89 fnt \ 90 esp \ 91 usbcmn \ 92 scutil \ 93 usbkbd \ 94 kbd \ 95 kpr \ 96 darch \ 97 hid \ 98 wfs \ 99 wfsdev \ 100 ga \ 101 wfa \ 102 pd \ 103 wbc \ 104 wpadGtr \ 105 wpadTrn \ 106 107 108LIBS_INTERNAL = wk \ 109 wkmc \ 110 sdwp \ 111 simplekit \ 112 es \ 113 wad \ 114 cunit \ 115 fs \ 116 iprof 117 118LIBS += ${LIBS_INTERNAL} 119 120DEMOS = axdemo \ 121 dvddemo \ 122 fademo \ 123 gxdemo \ 124 kpaddemo \ 125 kpadOlddemo \ 126 memdemo \ 127 osdemo \ 128 sample \ 129 spdemo \ 130 videmo \ 131 wpaddemo \ 132 nanddemo \ 133 reldemo \ 134 paddemo \ 135 thpdemo \ 136 scprivatedemo \ 137 scdemo \ 138 carddemo \ 139 gddemo \ 140 hio2demo \ 141 arcdemo \ 142 darchdemo \ 143 encdemo \ 144 cxdemo \ 145 fntdemo \ 146 kbddemo \ 147 kprdemo \ 148 mididemo \ 149 limitdemo \ 150 launchdemo \ 151 installdemo \ 152 rsodemo \ 153 hiddemo \ 154 cntdemo \ 155 wfademo \ 156 pddemo \ 157 wbcdemo 158 159 160TESTS = os \ 161 card \ 162 sample \ 163 exi \ 164 sdwp \ 165 nand \ 166 pad \ 167 sc \ 168 dvd \ 169 di \ 170 fs \ 171 es \ 172 sdi \ 173 socket \ 174 usb \ 175 wpad \ 176 abuse \ 177 Nmenu \ 178 enc \ 179 installer \ 180 cx \ 181 updatecheck \ 182 wfsdev \ 183 wfa 184 185endif # EPPC 186 187ifdef X86 188 189HOST_LIBS = gd \ 190 hio2Host \ 191 wfsdev 192 193HOST_DEMOS = gddemo \ 194 hio2demo 195 196HOST_TOOLS = sample \ 197 dls1wt \ 198 dspadpcm \ 199 dsptool \ 200 sndconv \ 201 soundfile \ 202 thpaudio \ 203 thpcore \ 204 thputilities \ 205 THPConv \ 206 darch \ 207 ntcompress \ 208 wfsdev 209 210endif # X86 211 212LIBDIRS = $(addprefix $(LIB_ROOT)/,$(LIBS)) 213TESTDIRS = $(addprefix $(TEST_ROOT)/,$(TESTS)) 214DEMODIRS = $(addprefix $(DEMO_ROOT)/,$(DEMOS)) 215 216HOSTLIBDIRS = $(addprefix $(LIB_ROOT)/,$(HOST_LIBS)) 217HOSTDEMODIRS = $(addprefix $(DEMO_ROOT)/,$(HOST_DEMOS)) 218ADPCMLIBDIRS = $(addprefix $(LIB_ROOT)/,$(ADPCMLIB)) 219SOUNDFILELIBDIRS = $(addprefix $(LIB_ROOT)/,$(SOUNDFILELIB)) 220HOSTTOOLDIRS = $(addprefix $(TOOL_ROOT)/,$(HOST_TOOLS)) 221 222# NOTE: the order of these directories determines build order. 223# In this case, we want libs first, tests second, demos last 224SUBDIRS = $(addprefix $(LIB_ROOT)/,$(LIBS)) \ 225 $(addprefix $(TEST_ROOT)/,$(TESTS)) \ 226 $(addprefix $(DEMO_ROOT)/,$(DEMOS)) \ 227 $(addprefix $(LIB_ROOT)/,$(HOST_LIBS)) \ 228 $(addprefix $(DEMO_ROOT)/,$(HOST_DEMOS)) \ 229 $(addprefix $(LIB_ROOT)/,$(SOUNDFILELIB)) \ 230 $(addprefix $(LIB_ROOT)/,$(ADPCMLIB)) 231 232# The following changes the Makefile include path to include a 233# definition of which architecture we're building for 234ARCH_PATH = $(MAKE_ROOT)/$(ARCH_TARGET) 235 236all: setup subdirectories 237 238setup: 239 @if [ ! -d $(INSTALL_ROOT) ] ; then \ 240 echo "Creating $(INSTALL_ROOT)" ; \ 241 rm -rf $(INSTALL_ROOT) ; \ 242 mkdir $(BASEINSTALL_ROOT) ; \ 243 mkdir $(BASEINSTALL_ROOT)/$(ARCH_TARGET) ; \ 244 mkdir $(INSTALL_ROOT)/lib ; \ 245 mkdir $(INSTALL_ROOT)/bin ; \ 246 else \ 247 echo "Install directory ready" ;\ 248 fi 249 250# the following lines build up the flags for the recursive make commands 251BUILDFLAGS = X86=$(X86) PLATFORM=$(PLATFORM) DBREL="$(DBREL)" BUILDTOOLS_ROOT=$(MAKE_ROOT) 252 253ifdef NDEBUG 254BUILDFLAGS += NDEBUG=TRUE 255else 256BUILDFLAGS += DEBUG=TRUE 257endif 258 259ifdef BUILD 260BUILDFLAGS += build 261endif 262 263ifdef INSTALL 264BUILDFLAGS += install 265endif 266 267.PHONY: alllibs libraries demos tests hostlibs hostdemos adpcmlib 268 269subdirectories: 270 @for d in $(SUBDIRS) ; do \ 271 echo "------------------------------------------------------------------" ; \ 272 echo "Building $$d" ; \ 273 if [ ! -d $$d ] ; then \ 274 echo "Module $$d is missing...skipping" ; \ 275 else \ 276 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 277 fi ; \ 278 done ; 279 280alllibs: libraries hostlibs 281 282libraries: 283 @for d in $(LIBDIRS) ; do \ 284 echo "------------------------------------------------------------------" ; \ 285 echo "Building $$d" ; \ 286 if [ ! -d $$d ] ; then \ 287 echo "Module $$d is missing...skipping" ; \ 288 else \ 289 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 290 fi ; \ 291 done ; 292 293libraries.%: 294 @echo "------------------------------------------------------------------" ; \ 295 echo "Building libraries/$*" ; \ 296 $(MAKE) -C $(LIB_ROOT)/$* $(BUILDFLAGS) 297 298hostlibs: 299 @for d in $(HOSTLIBDIRS) ; do \ 300 echo "------------------------------------------------------------------" ; \ 301 echo "Building $$d" ; \ 302 if [ ! -d $$d ] ; then \ 303 echo "Module $$d is missing...skipping" ; \ 304 else \ 305 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 306 fi ; \ 307 done ; 308 309hostlibs.%: 310 @echo "------------------------------------------------------------------" ; \ 311 echo "Building libraries/$*" ; \ 312 $(MAKE) -C $(LIB_ROOT)/$* $(BUILDFLAGS) 313 314demos: 315 @for d in $(DEMODIRS) ; do \ 316 echo "------------------------------------------------------------------" ; \ 317 echo "Building $$d" ; \ 318 if [ ! -d $$d ] ; then \ 319 echo "Module $$d is missing...skipping" ; \ 320 else \ 321 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 322 fi ; \ 323 done ; 324 325demos.%: 326 @echo "------------------------------------------------------------------" ; \ 327 echo "Building demos/$*" ; \ 328 $(MAKE) -C $(DEMO_ROOT)/$* $(BUILDFLAGS) 329 330hostdemos: 331 @for d in $(HOSTDEMODIRS) ; do \ 332 echo "------------------------------------------------------------------" ; \ 333 echo "Building $$d" ; \ 334 if [ ! -d $$d ] ; then \ 335 echo "Module $$d is missing...skipping" ; \ 336 else \ 337 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 338 fi ; \ 339 done ; 340 341hostdemos.%: 342 @echo "------------------------------------------------------------------" ; \ 343 echo "Building demos/$*" ; \ 344 $(MAKE) -C $(DEMO_ROOT)/$* $(BUILDFLAGS) 345 346hosttools: 347 @for d in $(HOSTTOOLDIRS) ; do \ 348 echo "------------------------------------------------------------------" ; \ 349 echo "Building $$d" ; \ 350 if [ ! -d $$d ] ; then \ 351 echo "Module $$d is missing...skipping" ; \ 352 else \ 353 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 354 fi ; \ 355 done ; 356 357hosttools.%: 358 @echo "------------------------------------------------------------------" ; \ 359 echo "Building demos/$*" ; \ 360 $(MAKE) -C $(TOOL_ROOT)/$* $(BUILDFLAGS) 361 362tests: 363 @for d in $(TESTDIRS) ; do \ 364 echo "------------------------------------------------------------------" ; \ 365 echo "Building $$d" ; \ 366 if [ ! -d $$d ] ; then \ 367 echo "Module $$d is missing...skipping" ; \ 368 else \ 369 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 370 fi ; \ 371 done ; 372 373tests.%: 374 @echo "------------------------------------------------------------------" ; \ 375 echo "Building tests/$*" ; \ 376 $(MAKE) -C $(TEST_ROOT)/$* $(BUILDFLAGS) 377 378adpcmlib: 379 @for d in $(ADPCMLIBDIRS) ; do \ 380 echo "------------------------------------------------------------------" ; \ 381 echo "Building $$d" ; \ 382 if [ ! -d $$d ] ; then \ 383 echo "Module $$d is missing...skipping" ; \ 384 else \ 385 $(MAKE) -C $$d $(BUILDFLAGS) ; \ 386 fi ; \ 387 done ; 388 389update: 390 @if [ ! -f $(SS) ] ; then \ 391 echo "SourceSafe is not installed! Please go to \\ntd-pdc\Vss\Dolphin Readme" ; \ 392 exit 1; \ 393 fi 394 @echo "Changing Sourcesafe project to $(SSROOT), performing full GET." 395 @$(SS) cp $(SSROOT) -I-Y -y$(SSUSER) 396 @cd $(ROOT) 397 @$(SS) get \*.\* -R -I-Y -y$(SSUSER) -r -gf 398 399clean clobber superclobber: 400 @echo ">>> Cleaning $(ARCH_TARGET) target" ; 401 @for d in $(SUBDIRS) ; do \ 402 echo "------------------------------------------------------------------" ; \ 403 echo "Cleaning $$d" ; \ 404 if [ ! -d $$d ] ; then \ 405 echo "Module $$d is missing...skipping" ; \ 406 else \ 407 $(MAKE) -C $$d $@ $(BUILDFLAGS) ; \ 408 fi ; \ 409 done ; 410 411clean_libraries: 412 @echo ">>> Cleaning $(ARCH_TARGET) target" ; 413 @for d in $(LIBDIRS) ; do \ 414 echo "------------------------------------------------------------------" ; \ 415 echo "Cleaning $$d" ; \ 416 if [ ! -d $$d ] ; then \ 417 echo "Module $$d is missing...skipping" ; \ 418 else \ 419 $(MAKE) -C $$d clean $(BUILDFLAGS) ; \ 420 fi ; \ 421 done ; 422