############################################################################### # Makefile for any library # # Copyright (C) Nintendo. All rights reserved. # # These coded instructions, statements, and computer programs contain # proprietary information of Nintendo of America Inc. and/or Nintendo # Company Ltd., and are protected by Federal copyright law. They may # not be disclosed to third parties or copied or duplicated in any form, # in whole or in part, without the prior written consent of Nintendo. # ############################################################################### # NOTE: Only MODULE_DEPTH needs to be modified! # This makefile must set the relative depth to the src directory # using only "..", without a trailing slash MODULE_DEPTH := ../.. # commondefs must be included near the top so that all common variables # will be defined before their use. Define commondefs for compiler. include $(MODULE_DEPTH)/build/make/commondefs.mk include $(MODULE_DEPTH)/build/make/commondefs.cos.mk # Build script for Visual Studio 2008 VS_BUILD=./$(MODULE_DEPTH)/build/make/win32/build_vs_sln.sh # All modules should have "default" as first target. # Module makefiles should not specify any targets before including modulerules.mk. .PHONY: default default: install ############################################################################### # # help # ############################################################################### .PHONY: help help: @echo "------------------------------------------------------------------" ; \ echo "Usage:" ; \ echo "" ; \ echo " To build" ; \ echo " make - build 32-bit release version" ; \ echo " make BUILD_VS_X64=TRUE - build 32-bit&64-bit release version" ; \ echo " make BUILD_VS_DEBUG=TRUE - build debug version" ; \ echo " make BUILD_VS_ALL=TRUE - build 32-bit&64-bit release version bins and debug libs" ; \ echo " make clean - remove object and dependency files" ; \ echo " make clobber - return to checkout state" ; \ echo "" ############################################################################### # # Visual Studio 2008 Solution files to compile # ############################################################################### # List for libs (e.g): .lib and .dll BUILD_SLN_LIBS := "projects\gfd\gfd.sln" # List for bins (e.g): .exe BUILD_SLN_BINS := "projects\gshCompile\gshCompile.sln" \ "projects\TexConv2\TexConv2.sln" ############################################################################### # # Generic compile rules & dependency creation # ############################################################################### .PHONY: build_lib_all build_lib build_lib_64 build_lib_D build_lib_64_D \ build_bin_all build_bin build_bin_64 build_bin_D build_bin_64_D build_lib_all: @for sln in $(BUILD_SLN_LIBS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building All $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" ; \ done build_lib_D: @for sln in $(BUILD_SLN_LIBS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Debug|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Debug|Win32" ; \ done build_lib: @for sln in $(BUILD_SLN_LIBS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Release|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Release|Win32" ; \ done build_lib_64: @for sln in $(BUILD_SLN_LIBS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Release|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Release|x64" ; \ done build_lib_64_D: @for sln in $(BUILD_SLN_LIBS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Debug|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Debug|x64" ; \ done build_bin_all: build_lib_all @for sln in $(BUILD_SLN_BINS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building All $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" ; \ done build_bin: build_lib @for sln in $(BUILD_SLN_BINS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Release|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Release|Win32" ; \ done build_bin_D: build_lib_D @for sln in $(BUILD_SLN_BINS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Debug|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Debug|Win32" ; \ done build_bin_64: build_lib_64 @for sln in $(BUILD_SLN_BINS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Release|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Release|x64" ; \ done build_bin_64_D: build_lib_64_D @for sln in $(BUILD_SLN_BINS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Building Debug|x64 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "" "Debug|x64" ; \ done ############################################################################### # # headers # ############################################################################### .PHONY: headers print_module_header print_module_headers: @echo "------------------------------------------------------------------" ; \ echo "Installing headers $(MODULE_PATH_FROM_SRC)/projects" HEADER_DIR := headers HEADERS := $(shell if [ -d $(HEADER_DIR) ] ; then find $(HEADER_DIR) -iname "*.h" -type f | sed 's;^$(HEADER_DIR);$(INCLUDE_DIR);g' ; fi) $(INCLUDE_DIR)/%: $(HEADER_DIR)/% $(MACRO_INSTALL_FILE) $< $@ headers: print_module_headers $(HEADERS) $(MODULE_HEADERS) ############################################################################### # # install # ############################################################################### .PHONY: install # Define always since doesn't seem to work only for install target INCLUDEDEPS=TRUE ifeq ($(BUILD_VS_ALL),TRUE) install: build_lib_all build_bin_all else ifeq ($(BUILD_VS_X64),TRUE) ifeq ($(BUILD_VS_DEBUG),TRUE) install: build_lib_64_D build_bin_64_D else install: build_lib_64 build_bin_64 endif else ifeq ($(BUILD_VS_DEBUG),TRUE) install: build_lib_D build_bin_D else install: build_lib build_bin endif endif endif ############################################################################### # # clean # ############################################################################### .PHONY: print_module_clean cleanuser clean print_module_clobber clobber print_module_clean: @echo "------------------------------------------------------------------" ; \ echo "Cleaning $(MODULE_PATH_FROM_SRC)/projects" cleanuser: @for sln in $(BUILD_SLN_LIBS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Cleaning $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "/clean" ; \ done @for sln in $(BUILD_SLN_BINS) ; do \ echo "------------------------------------------------------------------" ; \ echo "Cleaning Release|Win32 $(MODULE_PATH_FROM_SRC)/$$sln" ; \ $(VS_BUILD) "$$sln" "/clean" ; \ done clean: print_module_clean cleanuser print_module_clobber: @echo "------------------------------------------------------------------" ; \ echo "Clobbering $(MODULE_PATH_FROM_SRC)/projects $(MODULE_COMMENT)" VS_LOG_DIR=$(subst ./,,$(shell find -iname "Release")) VS_LOG_DIR_D=$(subst ./,,$(shell find -iname "Debug")) VS_LOG_DIR_x64=$(subst ./,,$(shell find -iname "x64")) clobber: clean print_module_clobber @for dir in $(VS_LOG_DIR) ; do \ if [[ -d "$$dir" ]] ; then \ echo "removing $(MODULE_PATH_FROM_SRC)/$$dir" ; \ rm -Rf $$dir ; \ fi ; \ done @for dir in $(VS_LOG_DIR_D) ; do \ if [[ -d "$$dir" ]] ; then \ echo "removing $(MODULE_PATH_FROM_SRC)/$$dir" ; \ rm -Rf $$dir ; \ fi ; \ done @for dir in $(VS_LOG_DIR_x64) ; do \ if [[ -d "$$dir" ]] ; then \ echo "removing $(MODULE_PATH_FROM_SRC)/$$dir" ; \ rm -Rf $$dir ; \ fi ; \ done @rm -f vsout.txt #======== End of makefile ========#