summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-04-05 08:54:33 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2016-04-05 08:54:33 +0200
commit125acc0ff7fd755a86172a85c454255562834f76 (patch)
treebbcf78e6772ff8165bc2afbb143d21a1a444066f /src
parent8ee0b5915465f88cab3ee19b025435a27be474be (diff)
Updated makefile to support shaders in multiple dirs (nw)
Diffstat (limited to 'src')
-rw-r--r--src/osd/modules/render/bgfx/shaders/makefile22
-rw-r--r--src/osd/modules/render/bgfx/shaders/shader.mk147
2 files changed, 166 insertions, 3 deletions
diff --git a/src/osd/modules/render/bgfx/shaders/makefile b/src/osd/modules/render/bgfx/shaders/makefile
index 737ca43554b..e5ee052ab31 100644
--- a/src/osd/modules/render/bgfx/shaders/makefile
+++ b/src/osd/modules/render/bgfx/shaders/makefile
@@ -1,13 +1,29 @@
BGFX_DIR=../../../../../../3rdparty/bgfx
-RUNTIME_DIR=../../../../../..
+RUNTIME_DIR=../../../../../../bgfx
BUILD_DIR=../../../../../../build
-include $(BGFX_DIR)/scripts/shader.mk
+include shader.mk
-rebuild:
+SUBDIRS := $(patsubst .,,$(patsubst ./,,$(shell find . -type d)))
+
+
+rebuild: main $(SUBDIRS)
+
+$(SUBDIRS):
+ @echo $@
+ @make -s --no-print-directory TARGET=0 SHADERS_DIR=$@/ clean all
+ @make -s --no-print-directory TARGET=1 SHADERS_DIR=$@/ clean all
+ @make -s --no-print-directory TARGET=2 SHADERS_DIR=$@/ clean all
+ @make -s --no-print-directory TARGET=3 SHADERS_DIR=$@/ clean all
+ @make -s --no-print-directory TARGET=4 SHADERS_DIR=$@/ clean all
+ @make -s --no-print-directory TARGET=5 SHADERS_DIR=$@/ clean all
+
+main:
@make -s --no-print-directory TARGET=0 clean all
@make -s --no-print-directory TARGET=1 clean all
@make -s --no-print-directory TARGET=2 clean all
@make -s --no-print-directory TARGET=3 clean all
@make -s --no-print-directory TARGET=4 clean all
@make -s --no-print-directory TARGET=5 clean all
+
+.PHONY: main rebuild $(SUBDIRS)
diff --git a/src/osd/modules/render/bgfx/shaders/shader.mk b/src/osd/modules/render/bgfx/shaders/shader.mk
new file mode 100644
index 00000000000..835dbaf4e10
--- /dev/null
+++ b/src/osd/modules/render/bgfx/shaders/shader.mk
@@ -0,0 +1,147 @@
+#
+# Copyright 2011-2016 Branimir Karadzic. All rights reserved.
+# License: http://www.opensource.org/licenses/BSD-2-Clause
+#
+
+THISDIR:=../../../../../../3rdparty/bgfx/scripts
+include $(THISDIR)/tools.mk
+
+# Define SHADERS_DIR if your shader files are in a different dir than the makefile including this.
+# Notice: If defined, SHADERS_DIR should end with dir slash '/'.
+# Example:
+# SHADERS_DIR=shader_files/
+
+ifeq ($(SHADERS_DIR), "./")
+ SHADERS_DIR:=""
+endif
+
+ifndef TARGET
+.PHONY: all
+all:
+ @echo Usage: make TARGET=# [clean, all, rebuild]
+ @echo " TARGET=0 (hlsl - dx9)"
+ @echo " TARGET=1 (hlsl - dx11)"
+ @echo " TARGET=2 (glsl - nacl)"
+ @echo " TARGET=3 (glsl - android)"
+ @echo " TARGET=4 (glsl - linux)"
+ @echo " TARGET=5 (metal - OSX/iOS)"
+ @echo " VERBOSE=1 show build commands."
+else
+
+ifeq ($(TARGET), 0)
+VS_FLAGS=--platform windows -p vs_3_0 -O 3
+FS_FLAGS=--platform windows -p ps_3_0 -O 3
+SHADER_PATH=shaders/dx9/$(SHADERS_DIR)
+else
+ifeq ($(TARGET), 1)
+VS_FLAGS=--platform windows -p vs_4_0 -O 3
+FS_FLAGS=--platform windows -p ps_4_0 -O 3
+CS_FLAGS=--platform windows -p cs_5_0 -O 1
+SHADER_PATH=shaders/dx11/$(SHADERS_DIR)
+else
+ifeq ($(TARGET), 2)
+VS_FLAGS=--platform nacl
+FS_FLAGS=--platform nacl
+SHADER_PATH=shaders/gles/$(SHADERS_DIR)
+else
+ifeq ($(TARGET), 3)
+VS_FLAGS=--platform android
+FS_FLAGS=--platform android
+CS_FLAGS=--platform android
+SHADER_PATH=shaders/gles/$(SHADERS_DIR)
+else
+ifeq ($(TARGET), 4)
+VS_FLAGS=--platform linux -p 120
+FS_FLAGS=--platform linux -p 120
+CS_FLAGS=--platform linux -p 430
+SHADER_PATH=shaders/glsl$/$(SHADERS_DIR)
+else
+ifeq ($(TARGET), 5)
+VS_FLAGS=--platform osx -p metal
+FS_FLAGS=--platform osx -p metal
+CS_FLAGS=--platform osx -p metal
+SHADER_PATH=shaders/metal/$(SHADERS_DIR)
+endif
+endif
+endif
+endif
+endif
+endif
+
+THISDIR := $(dir $(lastword $(MAKEFILE_LIST)))
+VS_FLAGS+=-i $(THISDIR)../src/;$(THISDIR)../examples/common/
+FS_FLAGS+=-i $(THISDIR)../src/;$(THISDIR)../examples/common/
+CS_FLAGS+=-i $(THISDIR)../src/$(THISDIR)../examples/common/
+
+BUILD_OUTPUT_DIR=$(addprefix ./, $(RUNTIME_DIR)/$(SHADER_PATH))
+BUILD_INTERMEDIATE_DIR=$(addprefix $(BUILD_DIR)/, $(SHADER_PATH))
+
+VS_SOURCES=$(notdir $(wildcard $(addprefix $(SHADERS_DIR), vs_*.sc)))
+VS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(notdir $(VS_SOURCES)))))
+
+FS_SOURCES=$(notdir $(wildcard $(addprefix $(SHADERS_DIR), fs_*.sc)))
+FS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(notdir $(FS_SOURCES)))))
+
+CS_SOURCES=$(notdir $(wildcard $(addprefix $(SHADERS_DIR), cs_*.sc)))
+CS_DEPS=$(addprefix $(BUILD_INTERMEDIATE_DIR)/,$(addsuffix .bin.d, $(basename $(notdir $(CS_SOURCES)))))
+
+VS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(notdir $(VS_SOURCES)))))
+FS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(notdir $(FS_SOURCES)))))
+CS_BIN = $(addprefix $(BUILD_INTERMEDIATE_DIR)/, $(addsuffix .bin, $(basename $(notdir $(CS_SOURCES)))))
+
+BIN = $(VS_BIN) $(FS_BIN)
+ASM = $(VS_ASM) $(FS_ASM)
+
+ifeq ($(TARGET), 1)
+BIN += $(CS_BIN)
+ASM += $(CS_ASM)
+else
+ifeq ($(TARGET), 3)
+BIN += $(CS_BIN)
+ASM += $(CS_ASM)
+else
+ifeq ($(TARGET), 4)
+BIN += $(CS_BIN)
+ASM += $(CS_ASM)
+endif
+endif
+endif
+
+$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : $(SHADERS_DIR)vs_%.sc
+ @echo [$(<)]
+ $(SILENT) $(SHADERC) $(VS_FLAGS) --type vertex --depends -o $(@) -f $(<) --disasm
+ $(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
+
+$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : $(SHADERS_DIR)fs_%.sc
+ @echo [$(<)]
+ $(SILENT) $(SHADERC) $(FS_FLAGS) --type fragment --depends -o $(@) -f $(<) --disasm
+ $(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
+
+$(BUILD_INTERMEDIATE_DIR)/cs_%.bin : $(SHADERS_DIR)cs_%.sc
+ @echo [$(<)]
+ $(SILENT) $(SHADERC) $(CS_FLAGS) --type compute --depends -o $(@) -f $(<) --disasm
+ $(SILENT) cp $(@) $(BUILD_OUTPUT_DIR)/$(@F)
+
+.PHONY: all
+all: dirs $(BIN)
+ @echo Target $(SHADER_PATH)
+
+.PHONY: clean
+clean:
+ @echo Cleaning...
+ @-rm -vf $(BIN)
+ @-$(call CMD_RMDIR,$(BUILD_INTERMEDIATE_DIR))
+
+.PHONY: dirs
+dirs:
+ @-$(call CMD_MKDIR,$(BUILD_INTERMEDIATE_DIR))
+ @-$(call CMD_MKDIR,$(BUILD_OUTPUT_DIR))
+
+.PHONY: rebuild
+rebuild: clean all
+
+endif # TARGET
+
+-include $(VS_DEPS)
+-include $(FS_DEPS)
+-include $(CS_DEPS)