1# 2# Copyright 2011-2020 Branimir Karadzic. All rights reserved. 3# License: http://www.opensource.org/licenses/BSD-2-Clause 4# 5 6THISDIR:=../../../../../../3rdparty/bgfx/scripts 7include $(THISDIR)/tools.mk 8 9# Define SHADERS_DIR if your shader files are in a different dir than the makefile including this. 10# Notice: If defined, SHADERS_DIR should end with dir slash '/'. 11# Example: 12# SHADERS_DIR=shader_files/ 13 14ifeq ($(SHADERS_DIR), "./") 15 SHADERS_DIR:="" 16endif 17 18ifndef TARGET 19.PHONY: all 20all: 21 @echo Usage: make TARGET=# [clean, all, rebuild] 22 @echo " TARGET=0 (hlsl - d3d9)" 23 @echo " TARGET=1 (hlsl - d3d11)" 24 @echo " TARGET=2 (essl - nacl)" 25 @echo " TARGET=3 (essl - android)" 26 @echo " TARGET=4 (glsl)" 27 @echo " TARGET=5 (metal)" 28 @echo " TARGET=6 (pssl)" 29 @echo " TARGET=7 (spriv)" 30 @echo " VERBOSE=1 show build commands." 31else 32 33ifeq ($(TARGET), 0) 34VS_FLAGS=--platform windows -p vs_3_0 -O 3 35FS_FLAGS=--platform windows -p ps_3_0 -O 3 36SHADER_PATH=shaders/dx9/$(SHADERS_DIR) 37else 38ifeq ($(TARGET), 1) 39VS_FLAGS=--platform windows -p vs_4_0 -O 3 40FS_FLAGS=--platform windows -p ps_4_0 -O 3 41CS_FLAGS=--platform windows -p cs_5_0 -O 1 42SHADER_PATH=shaders/dx11/$(SHADERS_DIR) 43else 44ifeq ($(TARGET), 2) 45VS_FLAGS=--platform nacl 46FS_FLAGS=--platform nacl 47SHADER_PATH=shaders/essl/$(SHADERS_DIR) 48else 49ifeq ($(TARGET), 3) 50VS_FLAGS=--platform android 51FS_FLAGS=--platform android 52CS_FLAGS=--platform android 53SHADER_PATH=shaders/essl/$(SHADERS_DIR) 54else 55ifeq ($(TARGET), 4) 56VS_FLAGS=--platform linux -p 120 57FS_FLAGS=--platform linux -p 120 58CS_FLAGS=--platform linux -p 430 59SHADER_PATH=shaders/glsl/$(SHADERS_DIR) 60else 61ifeq ($(TARGET), 5) 62VS_FLAGS=--platform osx -p metal 63FS_FLAGS=--platform osx -p metal 64CS_FLAGS=--platform osx -p metal 65SHADER_PATH=shaders/metal/$(SHADERS_DIR) 66else 67ifeq ($(TARGET), 6) 68VS_FLAGS=--platform orbis -p pssl 69FS_FLAGS=--platform orbis -p pssl 70CS_FLAGS=--platform orbis -p pssl 71SHADER_PATH=shaders/pssl/$(SHADERS_DIR) 72else 73ifeq ($(TARGET), 7) 74VS_FLAGS=--platform linux -p spirv 75FS_FLAGS=--platform linux -p spirv 76CS_FLAGS=--platform linux -p spirv 77SHADER_PATH=shaders/spirv/$(SHADERS_DIR) 78endif 79endif 80endif 81endif 82endif 83endif 84endif 85endif 86 87THISDIR := $(dir $(lastword $(MAKEFILE_LIST))) 88VS_FLAGS+=-i "$(THISDIR)../src/;$(THISDIR)../examples/common/" 89FS_FLAGS+=-i "$(THISDIR)../src/;$(THISDIR)../examples/common/" 90CS_FLAGS+=-i "$(THISDIR)../src/;$(THISDIR)../examples/common/" 91 92BUILD_OUTPUT_DIR=$(addprefix ./, $(RUNTIME_DIR)/$(SHADER_PATH)) 93BUILD_INTERMEDIATE_DIR=$(addprefix $(BUILD_DIR)/, $(SHADER_PATH)) 94 95VS_SOURCES=$(notdir $(wildcard $(addprefix $(SHADERS_DIR), vs_*.sc))) 96VS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(notdir $(VS_SOURCES))))) 97 98FS_SOURCES=$(notdir $(wildcard $(addprefix $(SHADERS_DIR), fs_*.sc))) 99FS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(notdir $(FS_SOURCES))))) 100 101CS_SOURCES=$(notdir $(wildcard $(addprefix $(SHADERS_DIR), cs_*.sc))) 102CS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(notdir $(CS_SOURCES))))) 103 104VS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(notdir $(VS_SOURCES))))) 105FS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(notdir $(FS_SOURCES))))) 106CS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(notdir $(CS_SOURCES))))) 107 108BIN = $(VS_BIN) $(FS_BIN) 109ASM = $(VS_ASM) $(FS_ASM) 110 111ifeq ($(TARGET), 1) 112BIN += $(CS_BIN) 113ASM += $(CS_ASM) 114else 115ifeq ($(TARGET), 3) 116BIN += $(CS_BIN) 117ASM += $(CS_ASM) 118else 119ifeq ($(TARGET), 4) 120BIN += $(CS_BIN) 121ASM += $(CS_ASM) 122endif 123endif 124endif 125 126$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : $(SHADERS_DIR)vs_%.sc 127 @echo [$(<)] 128 $(SILENT) $(SHADERC) $(VS_FLAGS) --type vertex --depends -o $(@) -f $(<) --disasm 129 $(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) 130 131$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : $(SHADERS_DIR)fs_%.sc 132 @echo [$(<)] 133 $(SILENT) $(SHADERC) $(FS_FLAGS) --type fragment --depends -o $(@) -f $(<) --disasm 134 $(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) 135 136$(BUILD_INTERMEDIATE_DIR)/cs_%.bin : $(SHADERS_DIR)cs_%.sc 137 @echo [$(<)] 138 $(SILENT) $(SHADERC) $(CS_FLAGS) --type compute --depends -o $(@) -f $(<) --disasm 139 $(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F) 140 141.PHONY: all 142all: dirs $(BIN) 143 @echo Target $(SHADER_PATH) 144 145.PHONY: clean 146clean: 147 @echo Cleaning... 148 @-rm -vf $(BIN) 149 @-$(call CMD_RMDIR,$(BUILD_INTERMEDIATE_DIR)) 150 151.PHONY: dirs 152dirs: 153 @-$(call CMD_MKDIR,$(BUILD_INTERMEDIATE_DIR)) 154 @-$(call CMD_MKDIR,$(BUILD_OUTPUT_DIR)) 155 156.PHONY: rebuild 157rebuild: clean all 158 159endif # TARGET 160 161-include $(VS_DEPS) 162-include $(FS_DEPS) 163-include $(CS_DEPS) 164