1#!/usr/bin/env omake
2#----------------------------------------------------------------------------
3# Project: Horizon
4# File:    commondefs.gl.om
5#
6# Copyright 2007-2009 Nintendo.  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# $Date:: 2010-06-01#$
15# $Rev: 17243 $
16# $Author: hatamoto_minoru $
17#----------------------------------------------------------------------------
18
19# �A�Z���u���E�����J�̒�`
20public.VSASM            = $(ROOT_COMMANDS)$(DIRSEP)ctr_VertexShaderAssembler32.exe
21public.VSLD             = $(ROOT_COMMANDS)$(DIRSEP)ctr_VertexShaderLinker32.exe
22
23# �r���h�ς݃V�F�[�_���i�[����Ă���f�B���N�g��
24public.SHADER_PREBUILT_ROOT = $(ROOT_RESOURCES)$(DIRSEP)shaders
25
26# �A�Z���u���E�����J�� -I �œn�����C���N���[�h�f�B���N�g��
27public.SHADER_INCLUDES      = $(SHADER_PREBUILT_ROOT)
28
29# �C���N���[�h�f�B���N�g�����w�肷��R�}���h���C�������i�x���]���j
30public.PREFIXED_SHADER_INCLUDES = $`(addprefix -I, $(set $(absname $(SHADER_INCLUDES))))
31
32# �g���q�̒�`
33EXT_VSASM = .vsh
34EXT_VSOBJ = .obj
35EXT_VSBIN = .shbin
36
37# .obj/.shbin �̊i�[���Ԃ��‚e�f�B���N�g���̐������[�����`����
38getShaderObjectDirectory() =
39    return $(makeDirectory $(getObjectBaseDirectory)$(DIRSEP)CTR.Shader)
40
41# .obj �t�@�C����������
42# sourcefiles - .vsh �t�@�C���i�����j
43VertexShaderObjects(sourcefiles) =
44    # .obj ���i�[����f�B���N�g�������߂�
45    obj_dir_parent = $(getShaderObjectDirectory)
46
47    OFILES =
48    export OFILES
49    # .vsh �t�@�C����‚��‚ɑ΂��ă��[�����`
50    foreach(sourcefile, $(sourcefiles))
51        # �o�͂���t�@�C�������t���p�X�ŋ��߂�
52        OFILE = $(file $(obj_dir_parent)/$(basename $(removesuffix $(sourcefile)))$(EXT_VSOBJ))
53
54        # �Ԓl�ɒlj�
55        OFILES += $(OFILE)
56
57        # �A�Z���u���̃��[�����` (�x�����G���[���Ȃ��ꍇ�� grep �ŏo�͂��J�b�g)
58        # �f�B���N�g���ɂ��ˑ������Ď�������
59        $(OFILE): $(sourcefile) $(obj_dir_parent) $(VSASM)
60            $(VSASM) $< $(PREFIXED_SHADER_INCLUDES) -O$@ | grep -v '^.*finished - 0 error, 0 warning'
61
62    # �N���[���̃��[�����`
63    clean:
64        rm -rf $(obj_dir_parent)
65
66    return $(OFILES)
67
68# .shbin �t�@�C����������
69# name        - .shbin �̖��O�i�g���q�����j
70# sourcefiles - OMakefile �Ő������ꂽ .obj �t�@�C��
71# sourcefiles_pre - resources �ȉ��ɂ���r���h�ς� .obj �t�@�C��
72VertexShaderBinary(name, sourcefiles, sourcefiles_pre) =
73    # .obj ���i�[����f�B���N�g�������߂�
74    obj_dir_parent = $(getShaderObjectDirectory)
75
76    # �ˑ��֌W����������� sourcefiles_pre ���t���p�X�ɕϊ�����B
77    # (-I �ɗ���ƁA�r���h�ς� .obj ���X�V���ꂽ�Ƃ��ɍăr���h����Ȃ��B)
78    sourcefiles_pre = $(addprefix $(SHADER_PREBUILT_ROOT)$(DIRSEP), $(sourcefiles_pre))
79
80    # �o�͂���t�@�C�������t���p�X�ŋ��߂�
81    OFILE = $(file $(obj_dir_parent)/$(basename $(name))$(EXT_VSBIN))
82
83    # �����N�̃��[�����` (�x�����G���[���Ȃ��ꍇ�� grep �ŏo�͂��J�b�g)
84    $(OFILE): $(sourcefiles) $(sourcefiles_pre) $(obj_dir_parent) $(VSLD)
85        $(VSLD) $(sourcefiles) $(sourcefiles_pre) $(PREFIXED_SHADER_INCLUDES) -M -nodebug -O$@ | grep -v '^.*finished - 0 error, 0 warning'
86
87    if $(not $(defined SHBIN_INSTALL_ROOT))
88        if $(defined ROMFS_ROOT)
89            SHBIN_INSTALL_ROOT = $(ROMFS_ROOT)
90            export
91        export
92
93    # SHBIN_INSTALL_ROOT ����`����Ă���ꍇ�� SHBIN_INSTALL_ROOT �ȉ��Ƀo�C�i�����R�s�[
94    if $(and $(defined SHBIN_INSTALL_ROOT), $(SHBIN_INSTALL_ROOT))
95
96        # �C���X�g�[����̃t�@�C���������߂�
97        OFILE_INSTALL = $(SHBIN_INSTALL_ROOT)$(DIRSEP)$(basename $(OFILE))
98
99        # �C���X�g�[����ւ̊i�[
100        $(OFILE_INSTALL): $(OFILE) $(SHBIN_INSTALL_ROOT)
101            ln-or-cp $< $@
102        # �C���X�g�[����̃f�B���N�g�����쐬����
103        $(SHBIN_INSTALL_ROOT):
104            mkdir -p $@
105        #�N���[���̃��[�����`
106        clean:
107            rm -f $(OFILE_INSTALL)
108
109
110        # ROMFS ���̃t�@�C���� MAKEROM �O�ɏ�������K�v������
111        build-romfs: $(OFILE_INSTALL)
112
113    # �N���[���̃��[�����`
114    clean:
115        rm -rf $(obj_dir_parent)
116
117    # objects ���ɐ����������̃o�C�i������ɕԂ�
118    return $(OFILE)
119