2013-03-17 10:31:00 -07:00
#
2016-03-05 11:03:52 -08:00
# Copyright 2011-2016 Branimir Karadzic. All rights reserved.
2013-03-17 10:31:00 -07:00
# License: http://www.opensource.org/licenses/BSD-2-Clause
#
2014-08-17 17:20:15 -07:00
THISDIR := $( dir $( lastword $( MAKEFILE_LIST) ) )
i n c l u d e $( THISDIR ) / t o o l s . m k
2013-03-17 16:50:33 -07:00
2016-02-02 01:22:54 +01:00
# 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/
2013-03-17 10:31:00 -07:00
i f n d e f T A R G E T
.PHONY : all
2013-04-12 09:05:24 -07:00
all :
@echo Usage: make TARGET = # [clean, all, rebuild]
2015-06-12 21:10:29 -07:00
@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)"
2013-03-17 16:50:33 -07:00
@echo " VERBOSE=1 show build commands."
2013-03-17 10:31:00 -07:00
e l s e
2013-12-20 23:03:12 -08:00
2013-03-17 10:31:00 -07:00
i f e q ( $( 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
e l s e
i f e q ( $( TARGET ) , 1 )
VS_FLAGS = --platform windows -p vs_4_0 -O 3
FS_FLAGS = --platform windows -p ps_4_0 -O 3
2014-12-19 21:09:58 -08:00
CS_FLAGS = --platform windows -p cs_5_0 -O 1
2013-03-17 10:31:00 -07:00
SHADER_PATH = shaders/dx11
e l s e
i f e q ( $( TARGET ) , 2 )
VS_FLAGS = --platform nacl
FS_FLAGS = --platform nacl
SHADER_PATH = shaders/gles
e l s e
i f e q ( $( TARGET ) , 3 )
VS_FLAGS = --platform android
FS_FLAGS = --platform android
2014-07-20 20:27:13 -07:00
CS_FLAGS = --platform android
2013-03-17 10:31:00 -07:00
SHADER_PATH = shaders/gles
e l s e
i f e q ( $( TARGET ) , 4 )
VS_FLAGS = --platform linux -p 120
FS_FLAGS = --platform linux -p 120
2014-07-20 20:27:13 -07:00
CS_FLAGS = --platform linux -p 430
2013-03-17 10:31:00 -07:00
SHADER_PATH = shaders/glsl
2015-06-12 21:10:29 -07:00
e l s e
i f e q ( $( TARGET ) , 5 )
VS_FLAGS = --platform osx -p metal
FS_FLAGS = --platform osx -p metal
CS_FLAGS = --platform osx -p metal
SHADER_PATH = shaders/metal
e n d i f
2013-03-17 10:31:00 -07:00
e n d i f
e n d i f
e n d i f
e n d i f
e n d i f
2013-04-01 22:52:06 -07:00
THISDIR := $( dir $( lastword $( MAKEFILE_LIST) ) )
VS_FLAGS += -i $( THISDIR) ../src/
FS_FLAGS += -i $( THISDIR) ../src/
2014-07-20 20:27:13 -07:00
CS_FLAGS += -i $( THISDIR) ../src/
2013-04-01 22:52:06 -07:00
2013-03-17 10:31:00 -07:00
BUILD_OUTPUT_DIR = $( addprefix ./, $( RUNTIME_DIR) /$( SHADER_PATH) )
BUILD_INTERMEDIATE_DIR = $( addprefix $( BUILD_DIR) /, $( SHADER_PATH) )
2016-02-02 01:22:54 +01:00
VS_SOURCES = $( notdir $( wildcard $( addprefix $( SHADERS_DIR) , vs_*.sc) ) )
VS_DEPS = $( addprefix $( BUILD_INTERMEDIATE_DIR) /,$( addsuffix .bin.d, $( basename $( notdir $( VS_SOURCES) ) ) ) )
2013-03-17 10:31:00 -07:00
2016-02-02 01:22:54 +01:00
FS_SOURCES = $( notdir $( wildcard $( addprefix $( SHADERS_DIR) , fs_*.sc) ) )
FS_DEPS = $( addprefix $( BUILD_INTERMEDIATE_DIR) /,$( addsuffix .bin.d, $( basename $( notdir $( FS_SOURCES) ) ) ) )
2013-03-17 10:31:00 -07:00
2016-02-02 01:22:54 +01:00
CS_SOURCES = $( notdir $( wildcard $( addprefix $( SHADERS_DIR) , cs_*.sc) ) )
CS_DEPS = $( addprefix $( BUILD_INTERMEDIATE_DIR) /,$( addsuffix .bin.d, $( basename $( notdir $( CS_SOURCES) ) ) ) )
2014-07-20 20:27:13 -07:00
2016-02-02 01:22:54 +01:00
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) ) ) ) )
2013-03-17 10:31:00 -07:00
BIN = $( VS_BIN) $( FS_BIN)
ASM = $( VS_ASM) $( FS_ASM)
2014-07-20 20:27:13 -07:00
i f e q ( $( TARGET ) , 1 )
BIN += $( CS_BIN)
ASM += $( CS_ASM)
e l s e
i f e q ( $( TARGET ) , 3 )
BIN += $( CS_BIN)
ASM += $( CS_ASM)
e l s e
i f e q ( $( TARGET ) , 4 )
BIN += $( CS_BIN)
ASM += $( CS_ASM)
e n d i f
e n d i f
e n d i f
2016-02-02 01:22:54 +01:00
$(BUILD_INTERMEDIATE_DIR)/vs_%.bin : $( SHADERS_DIR ) vs_ %.sc
2013-03-17 10:31:00 -07:00
@echo [ $( <) ]
2013-03-17 16:50:33 -07:00
$( SILENT) $( SHADERC) $( VS_FLAGS) --type vertex --depends -o $( @) -f $( <) --disasm
$( SILENT) cp $( @) $( BUILD_OUTPUT_DIR) /$( @F)
2013-03-17 10:31:00 -07:00
2016-02-02 01:22:54 +01:00
$(BUILD_INTERMEDIATE_DIR)/fs_%.bin : $( SHADERS_DIR ) fs_ %.sc
2013-03-17 10:31:00 -07:00
@echo [ $( <) ]
2013-03-17 16:50:33 -07:00
$( SILENT) $( SHADERC) $( FS_FLAGS) --type fragment --depends -o $( @) -f $( <) --disasm
$( SILENT) cp $( @) $( BUILD_OUTPUT_DIR) /$( @F)
2013-03-17 10:31:00 -07:00
2016-02-02 01:22:54 +01:00
$(BUILD_INTERMEDIATE_DIR)/cs_%.bin : $( SHADERS_DIR ) cs_ %.sc
2014-07-20 20:27:13 -07:00
@echo [ $( <) ]
$( SILENT) $( SHADERC) $( CS_FLAGS) --type compute --depends -o $( @) -f $( <) --disasm
$( SILENT) cp $( @) $( BUILD_OUTPUT_DIR) /$( @F)
2013-03-17 10:31:00 -07:00
.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
e n d i f # TARGET
- i n c l u d e $( VS_DEPS )
- i n c l u d e $( FS_DEPS )
2014-07-20 20:27:13 -07:00
- i n c l u d e $( CS_DEPS )