#!/usr/bin/env omake #---------------------------------------------------------------------------- # Project: Horizon # File: modulerules.om # # Copyright 2007-2009 Nintendo. All rights reserved. # # These coded instructions, statements, and computer programs contain # proprietary information of Nintendo of America Inc. and/or Nintendo # Company Ltd., and are protected by Federal copyright law. They may # not be disclosed to third parties or copied or duplicated in any form, # in whole or in part, without the prior written consent of Nintendo. # # $Date:: 2010-11-09#$ # $Rev: 30688 $ # $Author: takiguchi_shinichi $ #---------------------------------------------------------------------------- TEST_TARGETS = CCFLAGS += --diag-suppress=2817 CTR_NO_BANNER_ICON = true MAKE_CIA_ARCHIVE = $(ROOT_COMMANDS)$(DIRSEP)ctr_makeciaarchive32.exe # テストをインポート/実行するためのインポータを生成します。 public.MakeImporter(target_files) = target_dir = $(dirname $(nth 0, $(target_files))) target_ciafiles = $(filter %$(EXT_CIA), $(target_files)) testutil_dir = $(ROOT_SOURCES)/libraries/test/util rsf_content = $(testutil_dir)/content.rsf importer = foreach(ciafile, $(target_ciafiles)) cianame = $(basename $(ciafile)) content_testcfa = $(target_dir)/$(removesuffix $(cianame))$(EXT_CFA) # インポートするテストを生成します。 cia_archive_root = $(target_dir)/$(removesuffix $(cianame)).cia_archive_root $(content_testcfa): $(ciafile) $(makeDirectory $(cia_archive_root)) $(MAKE_CIA_ARCHIVE) :effects: $(cia_archive_root) $(MAKE_CIA_ARCHIVE) -cia $(ciafile) -rsf $(rsf_content) -o $(content_testcfa) --romfs-root $(cia_archive_root) # インポータを生成します。 content_importer = $(target_dir)/test_Importer$(EXT_CXI) section sources[] = $(testutil_dir)/test_Importer.cpp $(testutil_dir)/test_ImportFile.cpp LIBS += libnn_am \ libnn_ns LIBS += libnn_test target_program = test_Importer DESC_BASE = $(HORIZON_ROOT)/resources/specfiles/Application.desc DESCRIPTOR = $(HORIZON_ROOT)/sources/tools/DevMenu/DevMenu.autogen.desc DESC_PARAM[] = ServiceAccessControl+=fs:USER ServiceAccessControl+=ns:s Dependency+=am Dependency+=ns ROM_SPEC_FILE = $(testutil_dir)/test_importrun.rsf ROMFS_DEPENDENCIES = ROMFS_ROOT = if $(defined UserRunProcess) importer_files = $(UserRunProcess $(config), $(target_program), $(sources)) else importer_files = $(UserProcess $(config), $(target_program), $(sources)) # テストとインポータをコンテンツとして test_*.importer.cci を生成します。 importer_name = $(removesuffix $(cianame)).import importer = $(target_dir)/$(importer_name)$(EXT_CCI) section CTR_APPTYPE = BOTH title_contents[] = 0>$(content_importer) 1>$(content_testcfa) target_title = $(importer_name) UNIQUE_ID = 0xF1234 MAKEROMFLAGS += -DUNIQUE_ID=$(UNIQUE_ID) ROM_SPEC_FILE = $(rsf_content) if $(defined Title) $(importer): $(content_importer) $(content_testcfa) Title($(config), $(target_title), $(title_contents)) export importer return $(importer) public.UserProcessTest(config, files) = BUILD_TESTS = true name = $(removesuffix $(basename $(nth 0,$(files)))) TARGET_FILES = TARGET_FILES += $(UserProcess $(config), $(name), $(files)) IMPORTER = $(MakeImporter $(TARGET_FILES)) LIST_PREFIX = $(removesuffix $(basename $(TARGET_FILES))) CCIFile = $(replacesuffixes $(EXT_ELF), $(EXT_CCI), $(TARGET_FILES)) CIPFile = $(replacesuffixes $(EXT_ELF), $(EXT_CIP), $(TARGET_FILES)) BASENAME = $(basename $(nth 0, $(TARGET_FILES))) RUN_PROCLIST_FILES = $(FilesToRunProcessList $(config),$(absname $(TARGET_FILES))) RUN_EMUMEM_FILES = $(FilesToRunEmulationMemory $(config),$(absname $(TARGET_FILES))) RUN_IMPORT_FILES = $(FilesToRunEmulationMemory $(config),$(absname $(IMPORTER))) RUN_SPI_FILES = $(FilesToRunSPI $(config),$(absname $(TARGET_FILES))) export RUN_ARM9_FILES RUN_ARM9_FILES = if $(and $(defined FilesToRunARM9), $(defined IS_CIP), $(and $(defined REPLACE_KERNEL), $(REPLACE_KERNEL))) RUN_ARM9_FILES = $(FilesToRunARM9 $(config),$(absname $(CIPFile))) run-emumem: $(RUN_EMUMEM_FILES) run-spi: $(RUN_SPI_FILES) if $(not $(defined RUN_FILTER)) RUN_FILTER= * export if $(and $(defined BUILD_TESTS),$(equal $(BUILD_TESTS),true)) if $(and $(FilterTestAttributes $(filter-out test__%, $(filter test_%, $(BASENAME)))), \ $(isFilterMatch $(compileToRegex $(RUN_FILTER)), $(config.getScannerName))) if $(and $(defined TEST_ENVIRONMENT_PROCESSLIST), $(TEST_ENVIRONMENT_PROCESSLIST)) dotests-proclist: $(RUN_PROCLIST_FILES) if $(and $(defined TEST_ENVIRONMENT_EMUMEM), $(TEST_ENVIRONMENT_EMUMEM)) dotests-emumem: $(RUN_EMUMEM_FILES) if $(and $(defined TEST_ENVIRONMENT_IMPORT), $(TEST_ENVIRONMENT_IMPORT)) dotests-import: $(RUN_IMPORT_FILES) TARGET_FILES += $(IMPORTER) export if $(and $(defined TEST_ENVIRONMENT_ARM9), $(TEST_ENVIRONMENT_ARM9)) dotests-arm9: $(RUN_ARM9_FILES) if $(and $(defined TEST_ENVIRONMENT_SPI), $(TEST_ENVIRONMENT_SPI)) dotests-spi: $(RUN_SPI_FILES) export export return $(TARGET_FILES) if $(not $(defined OBJECTS)) OBJECTS = export if $(and $(defined DESCRIPTOR), $(defined DESC_PARAM)) if $(not $(defined DESC_BASE)) foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS))) DESC_BASE = $(TARGET.getDefaultDescriptorPath) export export if $(defined DESC_BASE) DESC($(DESCRIPTOR), $(DESC_PARAM), $(DESC_BASE)) if $(defined SOURCES_TEST) if $(filter test tests dotest dotests dotests-%, $(TARGETS)) LIBS += libnn_test librtport BUILD_TESTS = true if $(not $(defined TEST_ENVIRONMENT_PROCESSLIST)) TEST_ENVIRONMENT_PROCESSLIST = true export TEST_ENVIRONMENT_PROCESSLIST if $(not $(defined TEST_ENVIRONMENT_EMUMEM)) TEST_ENVIRONMENT_EMUMEM = true export TEST_ENVIRONMENT_EMUMEM if $(not $(defined TEST_ENVIRONMENT_IMPORT)) TEST_ENVIRONMENT_IMPORT = false if $(not $(defined TEST_ENVIRONMENT_ARM9)) TEST_ENVIRONMENT_ARM9 = false export TEST_ENVIRONMENT_ARM9 if $(not $(defined TEST_ENVIRONMENT_SPI)) TEST_ENVIRONMENT_SPI = true export TEST_ENVIRONMENT_SPI if $(not $(defined TEST_COMMON_SOURCES)) TEST_COMMON_SOURCES = export TEST_COMMON_SOURCES # プロセスリストで実行しないテストは cdi を作らない CTR_MAKE_DEVELOPMENT_IMAGE = $(TEST_ENVIRONMENT_PROCESSLIST) foreach(SOURCE_TEST, $(FilterTest $(SOURCES_TEST))) foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS))) EXEFILE = $(UserProcessTest $(TARGET), $(SOURCE_TEST) $(TEST_COMMON_SOURCES) $(OBJECTS)) TEST_TARGETS += $(EXEFILE) export export export export DefineDefaultRules()