1#!/usr/bin/env omake 2#---------------------------------------------------------------------------- 3# Project: Horizon 4# File: OMakefile 5# 6# Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved. 7# 8# These coded instructions, statements, and computer programs contain 9# proprietary information of Nintendo of America Inc. and/or Nintendo 10# Company Ltd., and are protected by Federal copyright law. They may 11# not be disclosed to third parties or copied or duplicated in any form, 12# in whole or in part, without the prior written consent of Nintendo. 13# 14# $Rev: 46365 $ 15#---------------------------------------------------------------------------- 16SUPPORTED_TARGETS = CTR-TEG2.Process.MPCore.* CTR-TS.Process.MPCore.* 17 18DEMO_UTILITY_SOURCE_DIR = $(dir Utility) 19DEMO_SHADER_PROGRAM_SOURCE_DIR = $(dir ShaderProgram) 20DEMO_RENDER_DATA_SOURCE_DIR = $(dir RenderData) 21DEMO_RENDER_SOURCE_DIR = $(dir Render) 22DEMO_BODY_SOURCE_DIR = $(dir Body) 23DEMO_COMMAND_CACHE_SOURCE_DIR = $(dir CommandCache) 24 25SOURCES[] = \ 26 $(DEMO_UTILITY_SOURCE_DIR)/demo_Utility.cpp \ 27 $(DEMO_UTILITY_SOURCE_DIR)/demo_MemoryManager.cpp \ 28 $(DEMO_UTILITY_SOURCE_DIR)/demo_TextureConverter.cpp \ 29 \ 30 $(DEMO_SHADER_PROGRAM_SOURCE_DIR)/demo_ProgramObject.cpp \ 31 $(DEMO_SHADER_PROGRAM_SOURCE_DIR)/demo_ColorFillProgram.cpp \ 32 $(DEMO_SHADER_PROGRAM_SOURCE_DIR)/demo_DecalTextureProgram.cpp \ 33 $(DEMO_SHADER_PROGRAM_SOURCE_DIR)/demo_FontProgram.cpp \ 34 $(DEMO_SHADER_PROGRAM_SOURCE_DIR)/demo_FontData.cpp \ 35 $(DEMO_SHADER_PROGRAM_SOURCE_DIR)/demo_ShaderManager.cpp \ 36 \ 37 $(DEMO_RENDER_DATA_SOURCE_DIR)/demo_RenderData.cpp \ 38 $(DEMO_RENDER_DATA_SOURCE_DIR)/demo_TrianglesRenderData.cpp \ 39 $(DEMO_RENDER_DATA_SOURCE_DIR)/demo_TextsRenderData.cpp \ 40 \ 41 $(DEMO_RENDER_SOURCE_DIR)/demo_CommandList.cpp \ 42 $(DEMO_RENDER_SOURCE_DIR)/demo_FrameBuffer.cpp \ 43 $(DEMO_RENDER_SOURCE_DIR)/demo_DisplayBuffers.cpp \ 44 $(DEMO_RENDER_SOURCE_DIR)/demo_GraphicsDrawing.cpp \ 45 \ 46 $(DEMO_RENDER_SOURCE_DIR)/demo_RenderSystem.cpp \ 47 \ 48 $(DEMO_BODY_SOURCE_DIR)/demo_Body.cpp \ 49 $(DEMO_BODY_SOURCE_DIR)/demo_Cube.cpp \ 50 $(DEMO_BODY_SOURCE_DIR)/demo_Sphere.cpp \ 51 $(DEMO_BODY_SOURCE_DIR)/demo_Cylinder.cpp \ 52 $(DEMO_BODY_SOURCE_DIR)/demo_Particle.cpp \ 53 \ 54 $(DEMO_RENDER_SOURCE_DIR)/demo_RenderSystemDrawing.cpp \ 55 $(DEMO_RENDER_SOURCE_DIR)/demo_RenderSystemExt.cpp \ 56 $(DEMO_RENDER_SOURCE_DIR)/demo_Light.cpp \ 57 \ 58 $(DEMO_COMMAND_CACHE_SOURCE_DIR)/demo_CommandCache.cpp 59 60TARGET_LIBRARY = lib_demo 61 62#################################################################################################### 63# 64# Shader binary rules 65# 66#################################################################################################### 67 68VERTEX_SHADER_ASSEMBLER = $(ROOT_COMMANDS)$(DIRSEP)ctr_VertexShaderAssembler32.exe 69VERTEX_SHADER_LINKER = $(ROOT_COMMANDS)$(DIRSEP)ctr_VertexShaderLinker32.exe 70 71VERTEX_SHADER_DIR = $(dir shaders) 72VERTEX_SHADER_ASSEMBLER_FLAGS = 73VERTEX_SHADER_LINKER_FLAGS = -M 74 75VERTEX_SHADER_OBJ_EXT = .obj 76VERTEX_SHADER_BIN_EXT = .shbin 77 78BASIC_VERTEX_SHADER_FILES = \ 79 $(VERTEX_SHADER_DIR)/ColorFillVShader.vsh \ 80 $(VERTEX_SHADER_DIR)/FontVShader.vsh \ 81 $(VERTEX_SHADER_DIR)/DecalTextureVShader.vsh 82 83BASIC_SHADER_BINARY_NAME = BasicVShader 84 85public.ObjectFromVShader(config, files, shader_binary_name) = 86 SH_OBJ_FILES = 87 obj_dir_parent = $(config.getObjectDirectory) 88 foreach(file, $(files)) 89 BASENAME = $(removesuffix $(basename $(file))) 90 91 # *.obj 92 SH_OBJ_FILE = $(obj_dir_parent)/$(BASENAME)$(VERTEX_SHADER_OBJ_EXT) 93 94 if $(not $(defined SYMBOL_PREFIX)) 95 SYMBOL_PREFIX = $(uppercase $(removesuffix $(basename $(file)))) 96 export 97 98 # *.vsh -> *.obj 99 $(SH_OBJ_FILE): $(file) $(BIN2OBJ) $(obj_dir_parent) 100 $(VERTEX_SHADER_ASSEMBLER) $(file) $(VERTEX_SHADER_ASSEMBLER_FLAGS) -O$(SH_OBJ_FILE) | grep -v '^.*finished - 0 error, 0 warning' 101 102 SH_OBJ_FILES += $(SH_OBJ_FILE) 103 export SH_OBJ_FILES 104 105 # *.bin 106 SH_BIN_FILE = $(obj_dir_parent)/$(shader_binary_name)$(VERTEX_SHADER_BIN_EXT) 107 108 # *.obj -> *.bin 109 $(SH_BIN_FILE): $(SH_OBJ_FILES) $(obj_dir_parent) 110 $(VERTEX_SHADER_LINKER) $(SH_OBJ_FILES) $(VERTEX_SHADER_LINKER_FLAGS) -O$(SH_BIN_FILE) | grep -v '^.*finished - 0 error, 0 warning' 111 112 # *.o 113 OFILE = $(obj_dir_parent)/$(shader_binary_name)$(EXT_OBJ) 114 115 # *.bin -> *.o 116 BIN2OBJ_FLAGS = -b $(shader_binary_name)_SHADER_BEGIN -e $(shader_binary_name)_SHADER_END 117 $(OFILE) : $(SH_BIN_FILE) $(obj_dir_parent) 118 $(BIN2OBJ) $(BIN2OBJ_FLAGS) $(SH_BIN_FILE) $(OFILE) 119 120 return $(OFILE) 121 122OBJECTS = $`(ObjectFromVShader $(TARGET), $(BASIC_VERTEX_SHADER_FILES), $(BASIC_SHADER_BINARY_NAME)) 123 124#################################################################################################### 125 126include $(ROOT_OMAKE)/modulerules 127 128build: $(DEFAULT_TARGETS)