#!/usr/bin/env omake
#----------------------------------------------------------------------------
# Project:   kujiravWFNg̃vO
# File:      OMakefile
# Auther:    k.ohno
# Date:      2010.10.1
#----------------------------------------------------------------------------

#----------------------------------------------------------------------------
# OMS`
#----------------------------------------------------------------------------
include $(getenv NW4C_ROOT)/build/omake/commondefs

#----------------------------------------------------------------------------
# ^[Qbg`
#----------------------------------------------------------------------------
SUPPORTED_TARGETS   = CTR-T*.Process.MPCore.fast

#----------------------------------------------------------------------------
# Kujira{rh[
#----------------------------------------------------------------------------
include ../omake_xy_module_rule

#----------------------------------------------------------------------------
#		OL
#----------------------------------------------------------------------------
#ENABLE_CPP_EXCEPTION = true

#----------------------------------------------------------------------------
#		oi[t@C̎w
#----------------------------------------------------------------------------
#CTR_BANNER_SPEC = ../../banner/sample.bsf

#----------------------------------------------------------------------------
#        KvȃCǔ
#----------------------------------------------------------------------------
LIBS += libnn_math libnn_ulcd libnn_ssl libnn_nwm libnn_crypto libnn_swkbd libnn_uds

#@Todo ͏܂傤I
NW_LIBRARIES += libnw_demo

NW_LIBRARIES += libnw_snd
NW_LIBRARIES += libnw_h3d

GFLIB_NAME     = gflcpp
GFLNETLIB_NAME = gflnet
PAWNLIB_NAME   = pawn
PMLIB_NAME     = pmlib

##  HIOgpłrelease[h
if $(defined RELEASEHIO_MODE )
    if $(equal $(RELEASEHIO_MODE), true)
        GFLIB_NAME     = gflcpphio
        GFLNETLIB_NAME = gflnethio
        PAWNLIB_NAME   = pawnhio
        PMLIB_NAME     = pmlibhio
        LINK_HIO_LIB   = true
        export
    export



LIBFILES += $`(addprefix $(GFLIBDIR)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), $(GFLIB_NAME))
LIBFILES += $`(addprefix $(GFLNETDIR)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), $(GFLNETLIB_NAME))
LIBFILES += $`(addprefix $(PMLIBDIR)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), $(PMLIB_NAME))
LIBFILES += $`(addprefix $(PAWNLIBDIR)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), $(PAWNLIB_NAME))

LIBFILES += $`(addprefix $(CTRMW_NAR_ROOT)/libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_nar)
LIBFILES += $`(addprefix $(CTRMW_PFID_LIB)/$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_pfid)
LIBFILES += $`(addprefix $(CTRMW_PFID_LIB)/$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_blink)
LIBFILES += $`(addprefix $(CTRMW_PFID_LIB)/$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_smile)

#IMAGE DB
if $(defined USE_IMAGE_DB_FLAG )
    LIBFILES += $`(addprefix $(IMAGEDB_LIB)$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), ImageDb)
    export

#CTRNEX
NEX_LIB             = $(CTRNEX_LIB)
WCHAR_SUFFIX        = u
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libConsoleIO$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libDataStoreClient$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libDynRTExt$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libFramework$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libHostMigrationExt$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libIndependentServer$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libMatchmakeExtensionClient$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libMessagingClient$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libNATTraversalClient$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libNetZ$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libNgsFacade$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libPHBDRExt$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libQuazalCore$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libRanking$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libSessionEnumeration$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libStorageManagerClient$(WCHAR_SUFFIX))
LIBFILES += $`(addprefix $(NEX_LIB)/$(config.getTargetSubDirectory true)/, libSubscriptionClient$(WCHAR_SUFFIX))

#CTRPIA
LIBFILES   += $`(addprefix $(CTRPIA_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libpia_common)      \
              $`(addprefix $(CTRPIA_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libpia_local)       \
              $`(addprefix $(CTRPIA_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libpia_sync)        \
              $`(addprefix $(CTRPIA_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libpia_framework)   \
              $`(addprefix $(CTRPIA_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libpia_pead)
#             $`(addprefix $(CTRPIA_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libpia_transport)

LIBFILES += $`(addprefix $(CTRMW_MOBICLIP_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_mo_MoflexDemuxer)
LIBFILES += $`(addprefix $(CTRMW_MOBICLIP_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_mo_MobiclipVideoDecoder)
LIBFILES += $`(addprefix $(CTRMW_MOBICLIP_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_mo_ImaAdpcmAudioDecoder)
LIBFILES += $`(addprefix $(CTRMW_MOBICLIP_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_mo_FastAudioDecoder)
LIBFILES += $`(addprefix $(CTRMW_MOBICLIP_ROOT)$(DIRSEP)libraries$(DIRSEP)$(config.getTargetSubDirectory true)$(DIRSEP), libmw_mo_FilterDeblocker)


#----------------------------------------------------------------------------
#        TufBNg`
#----------------------------------------------------------------------------
.SUBDIRS:


#----------------------------------------------------------------------------
#        RpC\[X @todo MapViewerƎ
#----------------------------------------------------------------------------
SOURCES_REFERENCE_ROOT = ../../
MAKE_PROG_FILE  = $(getenv PROGRAMDIR_MAPVIEW)/make_prog_files

if $(defined USE_RO_FLAG )
  ALL_SOURCE_FILE = $(getenv PROGRAMDIR_MAPVIEW)/all_source.cpp
  export
else
  ALL_SOURCE_FILE = $(glob i, $(getenv PROGRAMDIR_MAPVIEW)/*.cpp)
  export


if $(equal $(TARGETS),no_all)
  include $(MAKE_PROG_FILE)
  export
else
  SOURCES[] = $(ALL_SOURCE_FILE)
  export


#----------------------------------------------------------------------------
#        Aṽ^Cv
#----------------------------------------------------------------------------
if $(defined KUJIRA_APPTYPE )
  if $(equal $(KUJIRA_APPTYPE), card)
    CTR_APPTYPE = CARD
    export
  else
    CTR_APPTYPE = LIST
    export
  export
else
  CTR_APPTYPE = LIST
  export



#----------------------------------------------------------------------------
#        ^[QbgɕKvȒ`
#----------------------------------------------------------------------------
.PHONY: no_all

#----------------------------------------------------------------------------
#        ^[QbgvO @todo MapViewerƎ
#----------------------------------------------------------------------------
TARGET_PROGRAM =   xy
TITLE       = mapviewer # AvP[Ṽ^Cgw肵܂B



#----------------------------------------------------------------------------
# precompile
#----------------------------------------------------------------------------
###  PRECOMPILE_SRC         =    include/precompile/precompile.pch
###  PRECOMPILE_CC_MCH     =    objects/precompile_cc.mch
###  PRECOMPILE_CCFLAGS    =    $(CCFLAGS)
###
###  CCFLAGS            +=    -prefix $(PRECOMPILE_CC_MCH)
###
###  precompile: $(PRECOMPILE_CC_MCH)
###          $(CC) --sys_include $(PRECOMPILE_CCFLAGS) $(INCLUDES) --use_pch=$(PRECOMPILE_SRC) -MD -precompile $(PRECOMPILE_CC_MCH)
###
###  ###o[W`t@CXVꂽvRpCwb_XV
###  $(PRECOMPILE_CC_MCH):    $(VER_FILE)
###
###  ### .INCLUDE: $(PRECOMPILE_CC_MCH).d
###
###  $(PRECOMPILE_CC_MCH) : $(PRECOMPILE_SRC)
###          $(CC) --sys_include $(PRECOMPILE_CCFLAGS) $(INCLUDES) --use_pch=$(PRECOMPILE_SRC) -MD -precompile $(PRECOMPILE_CC_MCH)
###
###  ##$(OBJECTS):  $(PRECOMPILE_CC_MCH)
###

#-----------------------------------------------------------------------------
# ResFileList@@todo MapViewerƎ
#-----------------------------------------------------------------------------
RES_TREE_FILE   = $(PROJECT_ROOT_MAPVIEW)arc/file_tree.inc

if $(file-exists $(RES_TREE_FILE))
    include $(RES_TREE_FILE)
    GAME_FILE_LIST = $(addprefix $(ROMFS_ROOT)/, $(GAME_FILE_TREE))
    export
else
    GAME_FILE_LIST =
    export

#----------------------------------------------------------------------------
#        DLL`
#----------------------------------------------------------------------------
if $(defined USE_RO_FLAG )
    MODULE_NAMES       = $(DLL_MODULES)
    MODULES_ROOT       = ../

    # ÓIW[ׂ̈̊{ݒ
    MODULE_LIST         = $(addprefix $(MODULES_ROOT), $(MODULE_NAMES))
    MODULE_CRO          = $(addprefix $(ROMFS_ROOT)/,$(addsuffix .cro,$(MODULE_NAMES)))
    STATIC_CRS          = $(ROMFS_ROOT)/static.crs
    STATIC_CRR          = $(ROMFS_ROOT)/.crr/static.crr

    # ROM Files̈ˑݒ
    ROMFS_DEPENDENCIES  = $(MODULE_CRO) $`(STATIC_CRS) $`(STATIC_CRR) $(GAME_FILE_LIST)

    # u.crrvu.crsv̏o
    foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
        foreach(module, $(MODULE_NAMES))
            src = $(file $(TARGET.getImageDirectoryOf $(MODULES_ROOT)$(module))/$(module).cro)
            dst = $(addprefix $(ROMFS_ROOT)/,$(addsuffix .cro,$(module)))

            $(dst) : $(src) $(ROMFS_ROOT)
                cp $< $@

        $(STATIC_CRS): $(TARGET.getImageDirectory false)/$(TARGET_PROGRAM).crs $(ROMFS_ROOT)
            cp $< $@

        $(STATIC_CRR): $(TARGET.getImageDirectory false)/$(TARGET_PROGRAM).crr $(ROMFS_ROOT)
            mkdir -p $(dirname $@)
            cp $< $@
    export


else
    ROMFS_DEPENDENCIES  = $(GAME_FILE_LIST)
    export




#----------------------------------------------------------------------------
# LINK HIO LIBRARY
#----------------------------------------------------------------------------
if $(equal $(LINK_HIO_LIB), true)
    LIBS += libnn_fshio libnn_hio libnn_dev
    export


#----------------------------------------------------------------------------
#
#----------------------------------------------------------------------------
include $(ROOT_OMAKE)/modulerules


#----------------------------------------------------------------------------
#all_source.oNւ̑Ή
#----------------------------------------------------------------------------
if $(not $(equal $(TARGETS),no_all))
  #all_source.óA8000000byte傫Ȃ邽߁A
  #^CX^v`FbNB
  foreach(config, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
      obj_dir = $(config.getObjectDirectory)
      $(config.getBinaryPath $(TARGET_PROGRAM), $(EXT_ELF)) : :value: $(getMtimeIfLarge $(obj_dir)\\$(replacesuffixes .cpp, .o, $(ALL_SOURCE_FILE)))
      export



#----------------------------------------------------------------------------
# .ro.axf폜(rommk32.exesȂւ̑Ή)
#----------------------------------------------------------------------------
if $(defined USE_RO_FLAG )
    foreach(config, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
	if $(file-exists $(config.getBinaryPath $(TARGET_PROGRAM), .ro.axf))
            rm $(config.getBinaryPath $(TARGET_PROGRAM), .ro.axf)
            export


build:  $(DEFAULT_TARGETS)
no_all: $(DEFAULT_TARGETS)
clean:


