1############################################################################### 2# Makefile for any library 3# 4# Copyright (C) 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 14# NOTE: Only MODULE_DEPTH needs to be modified! 15 16# This makefile must set the relative depth to the src directory 17# using only "..", without a trailing slash 18 19MODULE_DEPTH := ../.. 20 21# commondefs must be included near the top so that all common variables 22# will be defined before their use. Define commondefs for compiler. 23 24include $(MODULE_DEPTH)/build/make/commondefs.mk 25include $(MODULE_DEPTH)/build/make/commondefs.cos.mk 26 27# Build script for Visual Studio 2008 28 29VS_BUILD=./$(MODULE_DEPTH)/build/make/win32/build_vs_sln.sh 30 31# All modules should have "default" as first target. 32# Module makefiles should not specify any targets before including modulerules.mk. 33 34.PHONY: default 35 36default: install 37 38############################################################################### 39# 40# help 41# 42############################################################################### 43 44.PHONY: help 45 46help: 47 @echo "------------------------------------------------------------------" ; \ 48 echo "Usage:" ; \ 49 echo "" ; \ 50 echo " To build" ; \ 51 echo " make - build 32-bit release version" ; \ 52 echo " make BUILD_VS_X64=TRUE - build 32-bit&64-bit release version" ; \ 53 echo " make BUILD_VS_DEBUG=TRUE - build debug version" ; \ 54 echo " make BUILD_VS_ALL=TRUE - build 32-bit&64-bit release version bins and debug libs" ; \ 55 echo " make clean - remove object and dependency files" ; \ 56 echo " make clobber - return to checkout state" ; \ 57 echo "" 58 59############################################################################### 60# 61# Visual Studio 2008 Solution files to compile 62# 63############################################################################### 64 65# List for libs (e.g): .lib and .dll 66 67BUILD_SLN_LIBS := "projects\gfd\gfd.sln" 68 69# List for bins (e.g): .exe 70 71BUILD_SLN_BINS := "projects\gshCompile\gshCompile.sln" \ 72 "projects\TexConv2\TexConv2.sln" 73 74############################################################################### 75# 76# Generic compile rules & dependency creation 77# 78############################################################################### 79 80.PHONY: build_lib_all build_lib build_lib_64 build_lib_D build_lib_64_D \ 81 build_bin_all build_bin build_bin_64 build_bin_D build_bin_64_D 82 83build_lib_all: 84 @for sln in $(BUILD_SLN_LIBS) ; do \ 85 echo "------------------------------------------------------------------" ; \ 86 echo "Building All $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 87 $(VS_BUILD) "$$sln" "" ; \ 88 done 89 90build_lib_D: 91 @for sln in $(BUILD_SLN_LIBS) ; do \ 92 echo "------------------------------------------------------------------" ; \ 93 echo "Building Debug|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 94 $(VS_BUILD) "$$sln" "" "Debug|Win32" ; \ 95 done 96 97build_lib: 98 @for sln in $(BUILD_SLN_LIBS) ; do \ 99 echo "------------------------------------------------------------------" ; \ 100 echo "Building Release|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 101 $(VS_BUILD) "$$sln" "" "Release|Win32" ; \ 102 done 103 104build_lib_64: 105 @for sln in $(BUILD_SLN_LIBS) ; do \ 106 echo "------------------------------------------------------------------" ; \ 107 echo "Building Release|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 108 $(VS_BUILD) "$$sln" "" "Release|x64" ; \ 109 done 110 111build_lib_64_D: 112 @for sln in $(BUILD_SLN_LIBS) ; do \ 113 echo "------------------------------------------------------------------" ; \ 114 echo "Building Debug|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 115 $(VS_BUILD) "$$sln" "" "Debug|x64" ; \ 116 done 117 118build_bin_all: build_lib_all 119 @for sln in $(BUILD_SLN_BINS) ; do \ 120 echo "------------------------------------------------------------------" ; \ 121 echo "Building All $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 122 $(VS_BUILD) "$$sln" "" ; \ 123 done 124 125build_bin: build_lib 126 @for sln in $(BUILD_SLN_BINS) ; do \ 127 echo "------------------------------------------------------------------" ; \ 128 echo "Building Release|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 129 $(VS_BUILD) "$$sln" "" "Release|Win32" ; \ 130 done 131 132build_bin_D: build_lib_D 133 @for sln in $(BUILD_SLN_BINS) ; do \ 134 echo "------------------------------------------------------------------" ; \ 135 echo "Building Debug|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 136 $(VS_BUILD) "$$sln" "" "Debug|Win32" ; \ 137 done 138 139build_bin_64: build_lib_64 140 @for sln in $(BUILD_SLN_BINS) ; do \ 141 echo "------------------------------------------------------------------" ; \ 142 echo "Building Release|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 143 $(VS_BUILD) "$$sln" "" "Release|x64" ; \ 144 done 145 146build_bin_64_D: build_lib_64_D 147 @for sln in $(BUILD_SLN_BINS) ; do \ 148 echo "------------------------------------------------------------------" ; \ 149 echo "Building Debug|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 150 $(VS_BUILD) "$$sln" "" "Debug|x64" ; \ 151 done 152 153############################################################################### 154# 155# headers 156# 157############################################################################### 158 159.PHONY: headers print_module_header 160 161print_module_headers: 162 @echo "------------------------------------------------------------------" ; \ 163 echo "Installing headers $(MODULE_PATH_FROM_SRC)/projects" 164 165HEADER_DIR := headers 166HEADERS := $(shell if [ -d $(HEADER_DIR) ] ; then find $(HEADER_DIR) -iname "*.h" -type f | sed 's;^$(HEADER_DIR);$(INCLUDE_DIR);g' ; fi) 167 168 169$(INCLUDE_DIR)/%: $(HEADER_DIR)/% 170 $(MACRO_INSTALL_FILE) $< $@ 171 172headers: print_module_headers $(HEADERS) $(MODULE_HEADERS) 173 174############################################################################### 175# 176# install 177# 178############################################################################### 179 180.PHONY: install 181 182# Define always since doesn't seem to work only for install target 183INCLUDEDEPS=TRUE 184 185ifeq ($(BUILD_VS_ALL),TRUE) 186install: build_lib_all build_bin_all 187else 188ifeq ($(BUILD_VS_X64),TRUE) 189ifeq ($(BUILD_VS_DEBUG),TRUE) 190install: build_lib_64_D build_bin_64_D 191else 192install: build_lib_64 build_bin_64 193endif 194else 195ifeq ($(BUILD_VS_DEBUG),TRUE) 196install: build_lib_D build_bin_D 197else 198install: build_lib build_bin 199endif 200endif 201endif 202 203############################################################################### 204# 205# clean 206# 207############################################################################### 208 209.PHONY: print_module_clean cleanuser clean print_module_clobber clobber 210 211print_module_clean: 212 @echo "------------------------------------------------------------------" ; \ 213 echo "Cleaning $(MODULE_PATH_FROM_SRC)/projects" 214 215cleanuser: 216 @for sln in $(BUILD_SLN_LIBS) ; do \ 217 echo "------------------------------------------------------------------" ; \ 218 echo "Cleaning $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 219 $(VS_BUILD) "$$sln" "/clean" ; \ 220 done 221 @for sln in $(BUILD_SLN_BINS) ; do \ 222 echo "------------------------------------------------------------------" ; \ 223 echo "Cleaning Release|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ 224 $(VS_BUILD) "$$sln" "/clean" ; \ 225 done 226 227clean: print_module_clean cleanuser 228 229print_module_clobber: 230 @echo "------------------------------------------------------------------" ; \ 231 echo "Clobbering $(MODULE_PATH_FROM_SRC)/projects $(MODULE_COMMENT)" 232 233VS_LOG_DIR=$(subst ./,,$(shell find -iname "Release")) 234VS_LOG_DIR_D=$(subst ./,,$(shell find -iname "Debug")) 235VS_LOG_DIR_x64=$(subst ./,,$(shell find -iname "x64")) 236 237clobber: clean print_module_clobber 238 @for dir in $(VS_LOG_DIR) ; do \ 239 if [[ -d "$$dir" ]] ; then \ 240 echo "removing $(MODULE_PATH_FROM_SRC)/$$dir" ; \ 241 rm -Rf $$dir ; \ 242 fi ; \ 243 done 244 245 @for dir in $(VS_LOG_DIR_D) ; do \ 246 if [[ -d "$$dir" ]] ; then \ 247 echo "removing $(MODULE_PATH_FROM_SRC)/$$dir" ; \ 248 rm -Rf $$dir ; \ 249 fi ; \ 250 done 251 252 @for dir in $(VS_LOG_DIR_x64) ; do \ 253 if [[ -d "$$dir" ]] ; then \ 254 echo "removing $(MODULE_PATH_FROM_SRC)/$$dir" ; \ 255 rm -Rf $$dir ; \ 256 fi ; \ 257 done 258 259 @rm -f vsout.txt 260 261#======== End of makefile ========# 262 263