############################################################################### # vim:ts=4:sw=4:noexpandtab # Makefile for any library # # Copyright (C) 2010 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. # ############################################################################### # This makefile must set the relative depth to the build directory # using only "..", without a trailing slash ifeq ($(WIN64),TRUE) WIN64_BIN_PATH=$(CAFE_ROOT)/system/bin/win64 GFD_DLL=$(WIN64_BIN_PATH)/gfd.dll SHADERUTILS_DLL=$(WIN64_BIN_PATH)/shaderUtils.dll GSH_BIN=$(WIN64_BIN_PATH)/gshCompile.exe else WIN32_BIN_PATH=$(CAFE_ROOT)/system/bin/win32 GFD_DLL=$(WIN32_BIN_PATH)/gfd.dll SHADERUTILS_DLL=$(WIN32_BIN_PATH)/shaderUtils.dll GSH_BIN=$(WIN32_BIN_PATH)/gshCompile.exe endif SHADER_DEST_ROOT?=$(shell cygpath -u $(CAFE_ROOT))/data/disc/content/assets/shaders SHADER_DEST_DIR?=$(SHADER_DEST_ROOT)/$(ASSET_SUBDIR)/$(PLATFORM) # commondefs.mk must be included near the top so that all common variables # will be defined before their use. include $(BUILD_MAKE_PATH)/commondefs.mk include $(BUILD_MAKE_PATH)/commondefs.cos.mk .PHONY: default default: shaders install: shaders headers: ############################################################################### # # For shaders # ############################################################################### .PHONY: clobber clean clean_shader clobber: clean_shader rm -Rf $(SHADER_DEST_ROOT)/$(ASSET_SUBDIR) clean: clobber clean_shader: $(_@)echo "------------------------------------------------------------------" ; \ echo "Cleaning shaders" rm -rf *.o $(SHADER_DEST_DIR)/%: %.sh $(GSH_BIN) $(_@)rm -Rf $(SHADER_DEST_DIR)/$* ; $(_@)mkdir -p $(SHADER_DEST_DIR)/$* ; $(_@)sed --in-place -e 's/\r\n/\n/' ./$*.sh &> /dev/null; ./$*.sh $(shell cygpath -m $(SHADER_DEST_DIR))/$* "$(GSH_OPTIONS)"; # For gsh file $(SHADER_DEST_DIR)/%.gsh: %.cs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -c $*.cs -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.gs %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -g $*.gs -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.so %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -so $*.so -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.so %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -so $*.so -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -p $*.ps -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.gsh: %.gs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -p $*.gs -o $(shell cygpath -m $@) # For header file $(SHADER_DEST_DIR)/%.h: %.cs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -c $*.cs -oh $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.gs %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -g $*.gs -oh $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -oh $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.so %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -so $*.so -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.so %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -so $*.so -o $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -oh $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -p $*.ps -oh $(shell cygpath -m $@) $(SHADER_DEST_DIR)/%.h: %.gs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) $(_@)mkdir -p $(dir $@) $(GSH_BIN) $(GSH_OPTIONS) -p $*.gs -oh $(shell cygpath -m $@) $(GSH_BIN): make -C $(CAFE_ROOT)/system/src/tool/gfx/projects/gshCompile .PHONY: print_shaders shaders print_shaders: $(call MOD_RULES_PHASE, "Building/Installing $(MODULE_PATH_FROM_SRC)") shaders: print_shaders \ $(patsubst %.vs,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.vs,$(SRC_DIRS)))) \ $(patsubst %.ps,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.ps,$(SRC_DIRS)))) \ $(patsubst %.gs,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.gs,$(SRC_DIRS)))) \ $(patsubst %.so,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.so,$(SRC_DIRS)))) \ $(patsubst %.cs,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.cs,$(SRC_DIRS)))) \ $(patsubst %.sh,$(SHADER_DEST_DIR)/%,$(CONVERTER_SCRIPTS)) .PHONY: shader_headers shader_headers: print_shaders \ $(patsubst %.vs,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.vs,$(SRC_DIRS)))) \ $(patsubst %.ps,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.ps,$(SRC_DIRS)))) \ $(patsubst %.gs,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.gs,$(SRC_DIRS)))) \ $(patsubst %.cs,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.cs,$(SRC_DIRS)))) #======== End of makefile ========#