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-09-20#$
15# $Rev: 26320 $
16# $Author: sasaki_yu $
17#----------------------------------------------------------------------------
18
19TEST_TARGETS =
20
21CCFLAGS += --diag-suppress=2817
22
23CTR_NO_BANNER = 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          =   $(testutil_dir)/test_importer.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-scripts: $(FILES)
119
120    run-emumem: $(RUN_EMUMEM_FILES)
121    run-spi:    $(RUN_SPI_FILES)
122
123    if $(and $(defined BUILD_TESTS),$(equal $(BUILD_TESTS),true))
124        if $(FilterTestAttributes $(filter-out test__%, $(filter test_%, $(BASENAME))))
125            if $(and $(defined TEST_ENVIRONMENT_PROCESSLIST), $(TEST_ENVIRONMENT_PROCESSLIST))
126                dotests-proclist: $(RUN_PROCLIST_FILES)
127            if $(and $(defined TEST_ENVIRONMENT_EMUMEM), $(TEST_ENVIRONMENT_EMUMEM))
128                dotests-emumem: $(RUN_EMUMEM_FILES)
129            if $(and $(defined TEST_ENVIRONMENT_IMPORT), $(TEST_ENVIRONMENT_IMPORT))
130                dotests-import: $(RUN_IMPORT_FILES)
131                TARGET_FILES += $(IMPORTER)
132                export
133            if $(and $(defined TEST_ENVIRONMENT_ARM9), $(TEST_ENVIRONMENT_ARM9))
134                dotests-arm9: $(RUN_ARM9_FILES)
135            if $(and $(defined TEST_ENVIRONMENT_SPI), $(TEST_ENVIRONMENT_SPI))
136                dotests-spi:    $(RUN_SPI_FILES)
137            export
138        export
139
140    return $(TARGET_FILES)
141
142if $(not $(defined OBJECTS))
143    OBJECTS =
144    export
145
146if $(and $(defined DESCRIPTOR), $(defined DESC_PARAM))
147    if $(not $(defined DESC_BASE))
148        foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
149            DESC_BASE = $(TARGET.getDefaultDescriptorPath)
150            export
151        export
152    if $(defined DESC_BASE)
153        DESC($(DESCRIPTOR), $(DESC_PARAM), $(DESC_BASE))
154
155if $(defined SOURCES_TEST)
156    if $(filter test tests dotest dotests dotests-emumem dotests-proclist dotests-arm9 dotests-spi dotests-import, $(TARGETS))
157        LIBS += libnn_test librtport
158        BUILD_TESTS = true
159        CTR_MAKE_DEVELOPMENT_IMAGE = true
160        if $(not $(defined TEST_ENVIRONMENT_PROCESSLIST))
161            TEST_ENVIRONMENT_PROCESSLIST = true
162            export TEST_ENVIRONMENT_PROCESSLIST
163        if $(not $(defined TEST_ENVIRONMENT_EMUMEM))
164            TEST_ENVIRONMENT_EMUMEM = true
165            export TEST_ENVIRONMENT_EMUMEM
166        if $(not $(defined TEST_ENVIRONMENT_IMPORT))
167            TEST_ENVIRONMENT_IMPORT = false
168        if $(not $(defined TEST_ENVIRONMENT_ARM9))
169            TEST_ENVIRONMENT_ARM9 = false
170            export TEST_ENVIRONMENT_ARM9
171        if $(not $(defined TEST_ENVIRONMENT_SPI))
172            TEST_ENVIRONMENT_SPI = true
173            export TEST_ENVIRONMENT_SPI
174        if $(not $(defined TEST_COMMON_SOURCES))
175            TEST_COMMON_SOURCES =
176            export TEST_COMMON_SOURCES
177        foreach(SOURCE_TEST, $(FilterTest $(SOURCES_TEST)))
178            foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
179                EXEFILE = $(UserProcessTest $(TARGET), $(SOURCE_TEST) $(TEST_COMMON_SOURCES) $(OBJECTS))
180                TEST_TARGETS += $(EXEFILE)
181                export
182            export
183        export
184    export
185
186DefineDefaultRules()
187