1#! make -f 2#---------------------------------------------------------------------------- 3# Project: RVLDWC - Library - build - buildtools 4# File: modulerules.cctype.CW3 5# 6# Copyright 2005 Nintendo. All rights reserved. 7# 8# These coded instructions, statements, and computer programs contain 9# proprietary information of Nintendo of America Inc. and/or Nintendo 10# Company Ltd., and are protected by Federal copyright law. They may 11# not be disclosed to third parties or copied or duplicated in any form, 12# in whole or in part, without the prior written consent of Nintendo. 13# 14# $Revision: 1.7 $ 15#---------------------------------------------------------------------------- 16 17 18AINCLUDE_DIRS = $(LINCLUDES) $(GINCLUDES) 19ALIBRARY_DIRS = $(LLIBRARY_DIRS) $(GLIBRARY_DIRS) 20ALIBRARIES = $(LLIBRARIES) $(GLIBRARIES) 21 22INCLUDE_DIRS = $(subst \ -I,\ ,$(addprefix -I,$(AINCLUDE_DIRS))) 23LIBRARY_DIRS = $(subst \ -L,\ ,$(addprefix -L,$(ALIBRARY_DIRS))) 24LIBRARIES = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES))) 25 26INCLUDES = -gccinc $(INCLUDE_DIRS) -cwd proj 27AS_INCLUDES = $(INCLUDE_DIRS) -cwd proj 28 29ifdef MSYSTEM # for MinGW32 30QUOTE =' 31else 32QUOTE =" 33endif 34 35DESTRUCTOR_CHAIN_C = $(CW_PPCDIR)/Runtime/Src/global_destructor_chain.c 36LCFILE ?= $(DEFAULT_LCFILE) 37 38 39############################################################################### 40# 41# Message displayed instead of a command line when RVLDWC_SILENT is defined. 42# 43# 44############################################################################### 45 46MSG_ASSEMBLE = " assemble:" 47MSG_COMPILE = " compile:" 48MSG_ARCHIVE = " archive:" 49MSG_LINK = " link:" 50MSG_PLFLINK = " plf-link:" 51MSG_MAKERSO = " make rso:" 52MSG_MAKELCF = " make lcf:" 53 54 55############################################################################### 56# 57# Definition of compile system rules. 58# 59############################################################################### 60 61.PRECIOUS: $(OBJDIR)/%.o $(BINDIR)/%.plf $(LCFILE) 62 63 64# ============================================================================= 65# Do not generate a depend file 66# 67 68ifdef NO_DEPENDFILES 69 70# ----------------------------------------------------------------------------- 71# .c 72# 73 74$(OBJS_CC):%.o: 75ifdef RVLDWC_SILENT 76 @echo $(MSG_COMPILE) $< 77endif 78 $(CC) $(CCFLAGS) $(INCLUDES) -c $< -o $@ 79 80 81# ----------------------------------------------------------------------------- 82# .cpp 83# 84 85$(OBJS_CXX):%.o: 86ifdef RVLDWC_SILENT 87 @echo $(MSG_COMPILE) $< 88endif 89 $(CC) $(CXXFLAGS) $(INCLUDES) -c $< -o $@ 90 91 92# ----------------------------------------------------------------------------- 93# .s 94# 95 96$(OBJS_AS):%.o: 97ifdef RVLDWC_SILENT 98 @echo $(MSG_ASSEMBLE) $< 99endif 100 $(AS) $(ASFLAGS) $(AS_INCLUDES) -c $< -o $@ 101 102 103# ----------------------------------------------------------------------------- 104# .pch 105# 106 107$(PCHDIR)/%.mch: $(PCHSRCS) 108ifdef RVLDWC_SILENT 109 @echo $(MSG_ASSEMBLE) $< 110endif 111 $(CC) $(CXXFLAGS) $(INCLUDES) -precompile $@ $< 112 113 114# ============================================================================= 115# Generate a depend file 116# 117 118else # ifndef NO_DEPENDFILES 119 120define MOVE_DEPEND 121 echo -n "$@: " > $(DEPDIR)/$(*F).tmp $(AND) \ 122 sed -f "$(RVLDWC_BUILDTOOLSDIR)/script/eppccleandepend.sed" $(*F).d >> $(DEPDIR)/$(*F).tmp $(AND) \ 123 mv $(DEPDIR)/$(*F).tmp $(DEPDIR)/$(*F).d $(AND) \ 124 $(RM) $(*F).d $(DEPDIR)/$(*F).tmp 125endef 126 127 128# ----------------------------------------------------------------------------- 129# .c 130# 131 132$(OBJS_CC):%.o: 133ifdef RVLDWC_SILENT 134 @echo $(MSG_COMPILE) $< 135endif 136 $(CC) $(CCFLAGS) $(INCLUDES) -c $< -MD -msgstyle gcc -o $@ $(AND) \ 137 $(MOVE_DEPEND) 138 139 140# ----------------------------------------------------------------------------- 141# .cpp 142# 143 144$(OBJS_CXX):%.o: 145ifdef RVLDWC_SILENT 146 @echo $(MSG_COMPILE) $< 147endif 148 $(CC) $(CXXFLAGS) $(INCLUDES) -c $< -MD -msgstyle gcc -o $@ $(AND) \ 149 $(MOVE_DEPEND) 150 151 152# ----------------------------------------------------------------------------- 153# .s 154# 155 156$(OBJS_AS):%.o: 157ifdef RVLDWC_SILENT 158 @echo $(MSG_ASSEMBLE) $< 159endif 160 $(AS) $(ASFLAGS) $(AS_INCLUDES) -c $< -MD -msgstyle gcc -o $@ $(AND) \ 161 $(MOVE_DEPEND) 162 163 164# ----------------------------------------------------------------------------- 165# .pch 166# 167 168$(PCHDIR)/%.mch: $(PCHSRCS) 169ifdef RVLDWC_SILENT 170 @echo $(MSG_ASSEMBLE) $< 171endif 172 $(CC) $(CXXFLAGS) $(INCLUDES) -MD -msgstyle gcc -precompile $@ $< $(AND) \ 173 $(MOVE_DEPEND) 174 175 176# ============================================================================= 177endif # ifdef NO_DEPENDFILES 178 179 180############################################################################### 181# 182# Definition of link system rules. 183# 184############################################################################### 185 186 187# ----------------------------------------------------------------------------- 188# .a 189# 190 191$(LIBDIR)/%.a: $(OBJS) $(LLIBS) 192ifdef RVLDWC_SILENT 193 @echo $(MSG_ARCHIVE) $@ 194endif 195 $(AR) $(ARFLAGS) $(OBJS) $(LLIBS) -o $@ 196 197 198# ----------------------------------------------------------------------------- 199# .elf 200# 201 202$(BINDIR)/%.elf: $(OBJS) $(MAKEFILE) $(LCFILE) 203ifdef RVLDWC_SILENT 204 @echo $(MSG_LINK) $@ 205endif 206 $(LD) $(LDFLAGS) $(LIBRARY_DIRS) $(OBJS) $(LLIBS) $(LIBRARIES) -lcf $(LCFILE) -o $@ 207 208 209# ----------------------------------------------------------------------------- 210# .plf 211# 212 213$(BINDIR)/%.plf: $(OBJS) $(MAKEFILE) $(LCFILE) 214ifdef RVLDWC_SILENT 215 @echo $(MSG_PLFLINK) $@ 216endif 217 $(LD) $(PLF_LDFLAGS) $(OBJS) $(LLIBS) -lcf $(LCFILE) -o $@ 218 219 220############################################################################### 221# 222# Definition of RSO (Revolution Shared Object) system rules. 223# 224############################################################################### 225 226# ============================================================================= 227# 228# Static module build. 229# 230 231ifdef RSO_MODULES 232 233# ----------------------------------------------------------------------------- 234# .lcf 235# 236 237ifneq ($(LCFILE),$(DEFAULT_LCFILE)) 238 239$(LCFILE): $(RSO_MODULES) 240ifdef RVLDWC_SILENT 241 @echo $(MSG_MAKELCF) $@ 242endif 243 $(MAKELCF) -t $(DEFAULT_LCFILE) -o $(LCFILE) -s $(BINDIR)/symbol.lst $(RSO_MODULES) 244 245endif 246 247 248# ----------------------------------------------------------------------------- 249# .rso 250# 251 252$(BINDIR)/$(STATIC_RSO): $(BINDIR)/$(TARGET_BIN) $(BINDIR)/symbol.lst $(MAKEFILE) 253ifdef RVLDWC_SILENT 254 @echo $(MSG_MAKERSO) $@ 255endif 256 $(MAKERSO) $(BINDIR)/$(TARGET_BIN) -e $(BINDIR)/symbol.lst 257 258 259# ============================================================================= 260# 261# Relocatable module build. 262# 263 264else # ifndef RSO_MODULES 265 266# ----------------------------------------------------------------------------- 267# .rso 268# 269 270$(BINDIR)/%.rso: $(BINDIR)/%.plf $(MAKEFILE) 271ifdef RVLDWC_SILENT 272 @echo $(MSG_MAKERSO) $@ 273endif 274 $(MAKERSO) $< 275 276 277# ============================================================================= 278endif # ifdef RSO_MODULES 279 280 281#----- End of modulerules.cctype.CW3 ----- 282