#!/usr/bin/env omake #---------------------------------------------------------------------------- # Project: NintendoWare # File: commondefs.om # # Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. 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. # # $Revision: 25242 $ #---------------------------------------------------------------------------- NW4C_ROOT = $(getenv NW4C_ROOT) CTRSDK_ROOT = $(getenv CTRSDK_ROOT) if $(and $(not $(defined FILTER)), $(defined NW_TARGET)) NW_TARGET_ITEMS = $(split $".", $(NW_TARGET)) if $(filter fast, $(NW_TARGET_ITEMS)) FILTER=Process.MPCore.fast export elseif $(filter small, $(NW_TARGET_ITEMS)) FILTER=Process.MPCore.small export elseif $(filter *, $(NW_TARGET_ITEMS)) FILTER=Process.MPCore.* export else FILTER=Process.MPCore.fast export if $(filter TEG2, $(NW_TARGET_ITEMS)) FILTER=CTR-TEG2.$(FILTER) export elseif $(filter TS, $(NW_TARGET_ITEMS)) FILTER=CTR-TS.$(FILTER) export else FILTER=CTR-TS.$(FILTER) export export # プライベート環境用の初期設定を読み込む if $(test -e $(NW4C_ROOT)/build/omake/private/commondefs_prolog.om) include $(NW4C_ROOT)/build/omake/private/commondefs_prolog export include $(getenv CTRSDK_ROOT)/build/omake/commondefs # INSTALL_ROOT を設定していないと定義されない問題対応 INSTALL_ROOT_LIBRARIES = $`(dir $(INSTALL_ROOT)$(DIRSEP)$(SUBDIR_LIBRARIES)) CCFLAGS += --gnu -DNN_SWITCH_ENABLE_MEMBER_NAME_SHORTCUT=1 CCFLAGS_WARNING += --diag_suppress 2815,3007,,3017,9931 LDFLAGS += --diag_suppress 9931 SHASM_FLAGS = NW_USE_COMMAND_CACHE=1 if $(defined NW_DEV_DISABLED) CCFLAGS += -DNW_DEV_DISABLED=1 export if $(defined NW_USE_COMMAND_CACHE) CCFLAGS += -DNW_USE_COMMAND_CACHE=1 SHASM_FLAGS += -DNW_USE_COMMAND_CACHE=1 export if $(defined NW_IGNORE_DEPRECATED) CCFLAGS += -DNW_IGNORE_DEPRECATED=1 SHASM_FLAGS += -DNW_IGNORE_DEPRECATED=1 export NW_INCLUDES[] = $(NW4C_ROOT)/include INCLUDES[] += $(NW_INCLUDES) SHADERS_DIR = shaders IMAGES_DIR = images INSTALL_ROOT_SHADERS = $(getenv NW4C_ROOT)$(DIRSEP)$(SHADERS_DIR) NW_LIBRARIES[] = libnw_math libnw_os libnw_ut libnw_anim libnw_font libnw_gfx libnw_lyt libnw_io libnw_snd libnw_dev LIBFILES += $`(addprefix $(NW4C_ROOT)$(DIRSEP)$(SUBDIR_LIBRARIES)$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), $(NW_LIBRARIES)) CTR_CMDLINE_TOOLS = $(CTRSDK_ROOT)/tools/CommandLineTools FONT_CONVERTER = $(NW4C_ROOT)/tools/FontConverter/NW4C_FontConverterConsole.exe VERTEX_SHADER_ASSEMBLER = $(CTR_CMDLINE_TOOLS)/ctr_VertexShaderAssembler32.exe VERTEX_SHADER_LINKER = $(CTR_CMDLINE_TOOLS)/ctr_VertexShaderLinker32.exe VERTEX_SHADER_INCLUDES[] = GEOMETRY_SHADER_INCLUDES[] = NW_LYT_SHADER_NAMES[] = nwfont_TextWriterShader.shbin nwfont_RectDrawerShader.shbin nwlyt_PaneShader.shbin nwlyt_ConstColorShader.shbin public.VertexShaderObject(files) = OFILES = OBJDIR = objects foreach(file, $(files)) OFILE = $(OBJDIR)$(DIRSEP)$(rootname $(basename $(file))).o $(OFILE): $(file) mkdir -p $(dirname $@) $(VERTEX_SHADER_ASSEMBLER) $`(SHASM_FLAGS) $(addprefix -I,$(VERTEX_SHADER_INCLUDES)) -O$@ $< -nowarning OFILES += $(OFILE) export OFILES return $(OFILES) public.VertexShader(name, files, isLibrary) = OBJDIR = objects OBJS = $(VertexShaderObject $(files)) OFILE = $(name).shbin SHBIN = $(IMAGES_DIR)$(DIRSEP)$(OFILE) OTARGET = $(SHBIN) $(SHBIN): $(OBJS) $(GEOMETRY_SHADER_INCLUDES) mkdir -p $(dirname $@) $(VERTEX_SHADER_LINKER) -M -O$@ $+ if $(isLibrary) OTARGET = $(INSTALL_ROOT_SHADERS)$(DIRSEP)$(OFILE) $(OTARGET): $(SHBIN) cp -f $< $@ export OTARGET clean: rm -f $(OBJS) return $(OTARGET) # UNDONE: 未対応 public.PrecompiledHeader(config, sources) = private.TARGET_DIR = $(NW4C_ROOT)/pch/$(config.getTargetSubDirectory false) public.CCFLAGS += --pch_dir=$(TARGET_DIR) --create_pch=$(TARGET_LIBRARY).pch EXPLICIT = true private.OFILES = $(Object $(config), $(sources)) private.OTARGET = $(TARGET_DIR)/$(TARGET_LIBRARY).pch return $(OFILES) public.Font(output, options) = # TODO: extract config files as depends. DEPS[] = $(output): $(DEPS) mkdir -p $(dirname $@) $(FONT_CONVERTER) -of $(output) $(options) return $(output) # # dir2 が dir1 と同じかそのサブディレクトリの場合に true を返す。 # public.InDirectory(dir1, dir2) = dir1 = $(lowercase $(absname $(dir1))) dir2 = $(lowercase $(absname $(dir2))) seqDir1 = $(split $(DIRSEP), $(dir1)) seqDir2 = $(split $(DIRSEP), $(dir2)) if $(gt $(length $(seqDir1)), $(length $(seqDir2))) return false else seqBaseDir = $(subrange 0, $(length $(seqDir1)), $(seqDir2)) return $(equal $(dir1), $(concat $(DIRSEP), $(seqBaseDir))) # # omake が directory 以下のディレクトリで実行されたのかを調べる。 # # cygwin 専用。 # public.InvokeInDirectory(directory) = if $(not $(and $(defined-env PWD), $(exists-in-path cygpath))) return false else execDir = $(shell cygpath -a -w $(getenv PWD)) return $(InDirectory $(directory), $(execDir)) if $(test -e $(ROOT)/build/omake/private/commondefs.om) include $(ROOT)/build/omake/private/commondefs export if $(defined NW_PRIVATE) NW4C_TREE_ROOT = $(NW_DEV_ROOT) export NW4C_TREE_ROOT else NW4C_TREE_ROOT = $(NW4C_ROOT) export NW4C_TREE_ROOT