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