1#!/usr/bin/env omake
2#----------------------------------------------------------------------------
3# Project: Horizon
4# File:    modulerules.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-11-09#$
15# $Rev: 30688 $
16# $Author: takiguchi_shinichi $
17#----------------------------------------------------------------------------
18
19TEST_TARGETS =
20
21CCFLAGS += --diag-suppress=2817
22
23CTR_NO_BANNER_ICON = true
24
25MAKE_CIA_ARCHIVE = $(ROOT_COMMANDS)$(DIRSEP)ctr_makeciaarchive32.exe
26
27# �e�X�g���C���|�[�g/���s���邽�߂̃C���|�[�^�������܂��B
28public.MakeImporter(target_files) =
29    target_dir          =   $(dirname $(nth 0, $(target_files)))
30    target_ciafiles     =   $(filter %$(EXT_CIA), $(target_files))
31    testutil_dir        =   $(ROOT_SOURCES)/libraries/test/util
32    rsf_content         =   $(testutil_dir)/content.rsf
33    importer            =
34
35    foreach(ciafile, $(target_ciafiles))
36        cianame             =   $(basename $(ciafile))
37        content_testcfa     =   $(target_dir)/$(removesuffix $(cianame))$(EXT_CFA)
38
39        # �C���|�[�g����e�X�g�������܂��B
40        cia_archive_root = $(target_dir)/$(removesuffix $(cianame)).cia_archive_root
41        $(content_testcfa): $(ciafile) $(makeDirectory $(cia_archive_root)) $(MAKE_CIA_ARCHIVE) :effects: $(cia_archive_root)
42            $(MAKE_CIA_ARCHIVE) -cia $(ciafile) -rsf $(rsf_content) -o $(content_testcfa) --romfs-root $(cia_archive_root)
43
44        # �C���|�[�^�������܂��B
45        content_importer = $(target_dir)/test_Importer$(EXT_CXI)
46        section
47            sources[]           =
48                                    $(testutil_dir)/test_Importer.cpp
49                                    $(testutil_dir)/test_ImportFile.cpp
50            LIBS               +=   libnn_am \
51                                    libnn_ns
52
53            LIBS               +=   libnn_test
54            target_program      =   test_Importer
55
56            DESC_BASE           =   $(HORIZON_ROOT)/resources/specfiles/Application.desc
57            DESCRIPTOR          =   $(HORIZON_ROOT)/sources/tools/DevMenu/DevMenu.autogen.desc
58            DESC_PARAM[]        =
59                                    ServiceAccessControl+=fs:USER
60                                    ServiceAccessControl+=ns:s
61                                    Dependency+=am
62                                    Dependency+=ns
63            ROM_SPEC_FILE       =   $(testutil_dir)/test_importrun.rsf
64            ROMFS_DEPENDENCIES  =
65            ROMFS_ROOT          =
66
67            if $(defined UserRunProcess)
68                importer_files = $(UserRunProcess $(config), $(target_program), $(sources))
69            else
70                importer_files = $(UserProcess $(config), $(target_program), $(sources))
71
72        # �e�X�g�ƃC���|�[�^���R���e���c�Ƃ��� test_*.importer.cci �������܂��B
73        importer_name       =   $(removesuffix $(cianame)).import
74        importer            =   $(target_dir)/$(importer_name)$(EXT_CCI)
75        section
76            CTR_APPTYPE         =   BOTH
77            title_contents[]    =
78                                    0>$(content_importer)
79                                    1>$(content_testcfa)
80            target_title        =   $(importer_name)
81            UNIQUE_ID           =   0xF1234
82            MAKEROMFLAGS       +=   -DUNIQUE_ID=$(UNIQUE_ID)
83            ROM_SPEC_FILE       =   $(rsf_content)
84
85            if $(defined Title)
86                $(importer): $(content_importer) $(content_testcfa)
87                Title($(config), $(target_title), $(title_contents))
88        export importer
89
90    return $(importer)
91
92public.UserProcessTest(config, files) =
93    BUILD_TESTS = true
94    name = $(removesuffix $(basename $(nth 0,$(files))))
95
96    TARGET_FILES =
97
98    TARGET_FILES += $(UserProcess $(config), $(name), $(files))
99
100    IMPORTER = $(MakeImporter $(TARGET_FILES))
101
102    LIST_PREFIX = $(removesuffix $(basename $(TARGET_FILES)))
103    CCIFile = $(replacesuffixes $(EXT_ELF), $(EXT_CCI), $(TARGET_FILES))
104    CIPFile = $(replacesuffixes $(EXT_ELF), $(EXT_CIP), $(TARGET_FILES))
105
106    BASENAME = $(basename $(nth 0, $(TARGET_FILES)))
107
108    RUN_PROCLIST_FILES  = $(FilesToRunProcessList $(config),$(absname $(TARGET_FILES)))
109    RUN_EMUMEM_FILES    = $(FilesToRunEmulationMemory $(config),$(absname $(TARGET_FILES)))
110    RUN_IMPORT_FILES    = $(FilesToRunEmulationMemory $(config),$(absname $(IMPORTER)))
111    RUN_SPI_FILES       = $(FilesToRunSPI $(config),$(absname $(TARGET_FILES)))
112
113    export RUN_ARM9_FILES
114    RUN_ARM9_FILES =
115    if $(and $(defined FilesToRunARM9), $(defined IS_CIP), $(and $(defined REPLACE_KERNEL), $(REPLACE_KERNEL)))
116        RUN_ARM9_FILES = $(FilesToRunARM9 $(config),$(absname $(CIPFile)))
117
118    run-emumem: $(RUN_EMUMEM_FILES)
119    run-spi:    $(RUN_SPI_FILES)
120
121    if $(not $(defined RUN_FILTER))
122        RUN_FILTER= *
123        export
124
125    if $(and $(defined BUILD_TESTS),$(equal $(BUILD_TESTS),true))
126        if $(and $(FilterTestAttributes $(filter-out test__%, $(filter test_%, $(BASENAME)))), \
127                 $(isFilterMatch $(compileToRegex $(RUN_FILTER)), $(config.getScannerName)))
128            if $(and $(defined TEST_ENVIRONMENT_PROCESSLIST), $(TEST_ENVIRONMENT_PROCESSLIST))
129                dotests-proclist: $(RUN_PROCLIST_FILES)
130            if $(and $(defined TEST_ENVIRONMENT_EMUMEM), $(TEST_ENVIRONMENT_EMUMEM))
131                dotests-emumem: $(RUN_EMUMEM_FILES)
132            if $(and $(defined TEST_ENVIRONMENT_IMPORT), $(TEST_ENVIRONMENT_IMPORT))
133                dotests-import: $(RUN_IMPORT_FILES)
134                TARGET_FILES += $(IMPORTER)
135                export
136            if $(and $(defined TEST_ENVIRONMENT_ARM9), $(TEST_ENVIRONMENT_ARM9))
137                dotests-arm9: $(RUN_ARM9_FILES)
138            if $(and $(defined TEST_ENVIRONMENT_SPI), $(TEST_ENVIRONMENT_SPI))
139                dotests-spi:    $(RUN_SPI_FILES)
140            export
141        export
142
143    return $(TARGET_FILES)
144
145if $(not $(defined OBJECTS))
146    OBJECTS =
147    export
148
149if $(and $(defined DESCRIPTOR), $(defined DESC_PARAM))
150    if $(not $(defined DESC_BASE))
151        foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
152            DESC_BASE = $(TARGET.getDefaultDescriptorPath)
153            export
154        export
155    if $(defined DESC_BASE)
156        DESC($(DESCRIPTOR), $(DESC_PARAM), $(DESC_BASE))
157
158if $(defined SOURCES_TEST)
159    if $(filter test tests dotest dotests dotests-%, $(TARGETS))
160        LIBS += libnn_test librtport
161        BUILD_TESTS = true
162        if $(not $(defined TEST_ENVIRONMENT_PROCESSLIST))
163            TEST_ENVIRONMENT_PROCESSLIST = true
164            export TEST_ENVIRONMENT_PROCESSLIST
165        if $(not $(defined TEST_ENVIRONMENT_EMUMEM))
166            TEST_ENVIRONMENT_EMUMEM = true
167            export TEST_ENVIRONMENT_EMUMEM
168        if $(not $(defined TEST_ENVIRONMENT_IMPORT))
169            TEST_ENVIRONMENT_IMPORT = false
170        if $(not $(defined TEST_ENVIRONMENT_ARM9))
171            TEST_ENVIRONMENT_ARM9 = false
172            export TEST_ENVIRONMENT_ARM9
173        if $(not $(defined TEST_ENVIRONMENT_SPI))
174            TEST_ENVIRONMENT_SPI = true
175            export TEST_ENVIRONMENT_SPI
176        if $(not $(defined TEST_COMMON_SOURCES))
177            TEST_COMMON_SOURCES =
178            export TEST_COMMON_SOURCES
179
180        # �v���Z�X���X�g�Ŏ��s���Ȃ��e�X�g�� cdi �����Ȃ�
181        CTR_MAKE_DEVELOPMENT_IMAGE = $(TEST_ENVIRONMENT_PROCESSLIST)
182
183        foreach(SOURCE_TEST, $(FilterTest $(SOURCES_TEST)))
184            foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
185                EXEFILE = $(UserProcessTest $(TARGET), $(SOURCE_TEST) $(TEST_COMMON_SOURCES) $(OBJECTS))
186                TEST_TARGETS += $(EXEFILE)
187                export
188            export
189        export
190    export
191
192DefineDefaultRules()
193