1############################################################################### 2# vim:ts=4:sw=4:noexpandtab 3# Makefile for any library 4# 5# Copyright (C) Nintendo. All rights reserved. 6# 7# These coded instructions, statements, and computer programs contain 8# proprietary information of Nintendo of America Inc. and/or Nintendo 9# Company Ltd., and are protected by Federal copyright law. They may 10# not be disclosed to third parties or copied or duplicated in any form, 11# in whole or in part, without the prior written consent of Nintendo. 12# 13############################################################################### 14 15# This makefile must set the relative depth to the build directory 16# using only "..", without a trailing slash 17 18ifeq ($(WIN64),TRUE) 19WIN64_BIN_PATH=$(CAFE_ROOT)/system/bin/win64 20GFD_DLL=$(WIN64_BIN_PATH)/gfd.dll 21SHADERUTILS_DLL=$(WIN64_BIN_PATH)/shaderUtils.dll 22GSH_BIN=$(WIN64_BIN_PATH)/gshCompile.exe 23else 24WIN32_BIN_PATH=$(CAFE_ROOT)/system/bin/win32 25GFD_DLL=$(WIN32_BIN_PATH)/gfd.dll 26SHADERUTILS_DLL=$(WIN32_BIN_PATH)/shaderUtils.dll 27GSH_BIN=$(WIN32_BIN_PATH)/gshCompile.exe 28endif 29 30SHADER_DEST_ROOT?=$(shell cygpath -u $(CAFE_ROOT))/data/disc/content/assets/shaders 31SHADER_DEST_DIR?=$(SHADER_DEST_ROOT)/$(ASSET_SUBDIR)/$(PLATFORM) 32 33# commondefs.mk must be included near the top so that all common variables 34# will be defined before their use. 35 36include $(BUILD_MAKE_PATH)/commondefs.mk 37include $(BUILD_MAKE_PATH)/commondefs.cos.mk 38 39.PHONY: default 40 41default: shaders 42install: shaders 43headers: 44 45############################################################################### 46# 47# For shaders 48# 49############################################################################### 50 51.PHONY: clobber clean clean_shader 52 53clobber: clean_shader 54 rm -Rf $(SHADER_DEST_ROOT)/$(ASSET_SUBDIR) 55 56clean: clobber 57 58clean_shader: 59 $(_@)echo "------------------------------------------------------------------" ; \ 60 echo "Cleaning shaders" 61 rm -rf *.o 62 63$(SHADER_DEST_DIR)/%: %.sh $(GSH_BIN) 64 $(_@)rm -Rf $(SHADER_DEST_DIR)/$* ; 65 $(_@)mkdir -p $(SHADER_DEST_DIR)/$* ; 66 $(_@)sed --in-place -e 's/\r\n/\n/' ./$*.sh &> /dev/null; 67 ./$*.sh $(shell cygpath -m $(SHADER_DEST_DIR))/$* "$(GSH_OPTIONS)"; 68 69# For gsh file 70 71$(SHADER_DEST_DIR)/%.gsh: %.cs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 72 $(_@)mkdir -p $(dir $@) 73 $(GSH_BIN) $(GSH_OPTIONS) -c $*.cs -o $(shell cygpath -m $@) 74 75$(SHADER_DEST_DIR)/%.gsh: %.gs %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 76 $(_@)mkdir -p $(dir $@) 77 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -g $*.gs -o $(shell cygpath -m $@) 78 79$(SHADER_DEST_DIR)/%.gsh: %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 80 $(_@)mkdir -p $(dir $@) 81 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -o $(shell cygpath -m $@) 82 83$(SHADER_DEST_DIR)/%.gsh: %.so %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 84 $(_@)mkdir -p $(dir $@) 85 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -so $*.so -o $(shell cygpath -m $@) 86 87$(SHADER_DEST_DIR)/%.gsh: %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 88 $(_@)mkdir -p $(dir $@) 89 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -o $(shell cygpath -m $@) 90 91$(SHADER_DEST_DIR)/%.gsh: %.so %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 92 $(_@)mkdir -p $(dir $@) 93 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -so $*.so -o $(shell cygpath -m $@) 94 95$(SHADER_DEST_DIR)/%.gsh: %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 96 $(_@)mkdir -p $(dir $@) 97 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -o $(shell cygpath -m $@) 98 99$(SHADER_DEST_DIR)/%.gsh: %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 100 $(_@)mkdir -p $(dir $@) 101 $(GSH_BIN) $(GSH_OPTIONS) -p $*.ps -o $(shell cygpath -m $@) 102 103$(SHADER_DEST_DIR)/%.gsh: %.gs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 104 $(_@)mkdir -p $(dir $@) 105 $(GSH_BIN) $(GSH_OPTIONS) -p $*.gs -o $(shell cygpath -m $@) 106 107# For header file 108 109$(SHADER_DEST_DIR)/%.h: %.cs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 110 $(_@)mkdir -p $(dir $@) 111 $(GSH_BIN) $(GSH_OPTIONS) -c $*.cs -oh $(shell cygpath -m $@) 112 113$(SHADER_DEST_DIR)/%.h: %.gs %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 114 $(_@)mkdir -p $(dir $@) 115 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -g $*.gs -oh $(shell cygpath -m $@) 116 117$(SHADER_DEST_DIR)/%.h: %.vs %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 118 $(_@)mkdir -p $(dir $@) 119 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -p $*.ps -oh $(shell cygpath -m $@) 120 121$(SHADER_DEST_DIR)/%.h: %.so %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 122 $(_@)mkdir -p $(dir $@) 123 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -so $*.so -o $(shell cygpath -m $@) 124 125$(SHADER_DEST_DIR)/%.h: %.gs %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 126 $(_@)mkdir -p $(dir $@) 127 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -g $*.gs -o $(shell cygpath -m $@) 128 129$(SHADER_DEST_DIR)/%.h: %.so %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 130 $(_@)mkdir -p $(dir $@) 131 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -so $*.so -o $(shell cygpath -m $@) 132 133$(SHADER_DEST_DIR)/%.h: %.vs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 134 $(_@)mkdir -p $(dir $@) 135 $(GSH_BIN) $(GSH_OPTIONS) -v $*.vs -oh $(shell cygpath -m $@) 136 137$(SHADER_DEST_DIR)/%.h: %.ps $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 138 $(_@)mkdir -p $(dir $@) 139 $(GSH_BIN) $(GSH_OPTIONS) -p $*.ps -oh $(shell cygpath -m $@) 140 141$(SHADER_DEST_DIR)/%.h: %.gs $(GSH_BIN) $(SHADERUTILES_DLL) $(GFD_DLL) 142 $(_@)mkdir -p $(dir $@) 143 $(GSH_BIN) $(GSH_OPTIONS) -p $*.gs -oh $(shell cygpath -m $@) 144 145 146$(GSH_BIN): 147 make -C $(CAFE_ROOT)/system/src/tool/gfx/projects/gshCompile 148 149.PHONY: print_shaders shaders 150 151print_shaders: 152 $(call MOD_RULES_PHASE, "Building/Installing $(MODULE_PATH_FROM_SRC)") 153 154shaders: print_shaders \ 155 $(patsubst %.vs,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.vs,$(SRC_DIRS)))) \ 156 $(patsubst %.ps,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.ps,$(SRC_DIRS)))) \ 157 $(patsubst %.gs,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.gs,$(SRC_DIRS)))) \ 158 $(patsubst %.so,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.so,$(SRC_DIRS)))) \ 159 $(patsubst %.cs,$(SHADER_DEST_DIR)/%.gsh,$(wildcard $(addsuffix /*.cs,$(SRC_DIRS)))) \ 160 $(patsubst %.sh,$(SHADER_DEST_DIR)/%,$(CONVERTER_SCRIPTS)) 161 162 163.PHONY: shader_headers 164 165shader_headers: print_shaders \ 166 $(patsubst %.vs,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.vs,$(SRC_DIRS)))) \ 167 $(patsubst %.ps,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.ps,$(SRC_DIRS)))) \ 168 $(patsubst %.gs,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.gs,$(SRC_DIRS)))) \ 169 $(patsubst %.cs,$(SHADER_DEST_DIR)/%.h,$(wildcard $(addsuffix /*.cs,$(SRC_DIRS)))) 170 171 172#======== End of makefile ========# 173 174