#!/usr/bin/env omake
#----------------------------------------------------------------------------
#
#    \[XRo[g OMakefile@2D/3D\[XȈՃRo[g@ev[g
#
#    ȉ
#    @USERS
#    @ARC_FILE
#    @TARGET_DIR
#      LAYOUT_HEADER_DIR
#       RESOURCE_2D_DIR
#       RESOURCE_3D_DIR
#       LAYOUT_OPTION
#       MODEL3D_OPTIN
#    ϐɒlK؂ɐݒ肷邱ƂŁACAEg\[XA3D\[X̃Ro[gsƂł܂B
#
#
#@ۂ̎gṕA
#    resource/makesample@ɂ܂B
#
#----------------------------------------------------------------------------


#----------------------------------------------------------------------------
#      [U[`
#       CONVERT̓etrueɂ[U[Lq
#       @̃t@C clytcmdlύXlB
#       jtakahashi_tomoya hoge hoge2
#----------------------------------------------------------------------------
USERS[] = takahashi_tomoya ishiguro_masateru saito_nozomu onoue_masayuki takada_keisuke ikeda_teppei tamada iwasawa hosaka_genya


#----------------------------------------------------------------------------
#      ^[Qbgt@C
#       Ƀ^[Qbgt@CLq@
#       jlyt_test_res
#        lyt_test_res.garc lyt_test_res.gaix܂B
#----------------------------------------------------------------------------
ARC_FILE = field_resident


#----------------------------------------------------------------------------
#      ʕRs[tH_
#----------------------------------------------------------------------------
#A[JCut@C
TARGET_DIR = $(getenv PROJECT_ROOT)/arc/

#Layout̃Ro[gɐwb_[̃Rs[
#j$(getenv PROGRAMDIR)/src/field/
LAYOUT_HEADER_DIR = $(getenv PROGRAMDIR)/src/field

#binlinker Őꂽwb_[̃Rs[(PACK_FLAGtruêƂ̂݁j
BINLINKER_HEADER_DIR = $(getenv PROGRAMDIR)/src/field


#----------------------------------------------------------------------------
#      ˑt@C
#
#      ĂtH_ȉ̃f[^ׂĂPpbN܂B
#----------------------------------------------------------------------------
RESOURCE_DIR[] = resident_common



##-----------------------------------------------------------------------------
##-----------------------------------------------------------------------------
.SUBDIRS:


#----------------------------------------------------------------------------
#  !!!!!!!!ȉ́A[U[PʂŕύXKv܂B!!!!!!!
#----------------------------------------------------------------------------











##-----------------------------------------------------------------------------
#     t@CktO
#     trueɂƁAk܂B
##-----------------------------------------------------------------------------
COMP_FLAG = true

##-----------------------------------------------------------------------------
#     PacktO
#     
#     etH_ȉ̃f[^pbNāAA[JCuB
##-----------------------------------------------------------------------------
PACK_FLAG = true









#----------------------------------------------------------------------------
#      macro
#       ̃}NǂݍނƂŁACONVERTUSERȂǂ`B
#----------------------------------------------------------------------------
include $(getenv PROJECT_ROOT)/resource/macro_define
include $(getenv GFL_TOOL_DIR)/lytsys/maketool
include $(getenv GFL_TOOL_DIR)/g3d_tool/g3d_omake_tool

#----------------------------------------------------------------------------
#  gpXNvg
#----------------------------------------------------------------------------
BINLINKER = ruby $(GFL_TOOL_DIR)/binlinker.rb

#----------------------------------------------------------------------------
#  ֐S
#----------------------------------------------------------------------------


#----------------------------------------------------------------------------
#      f[^pbN
#----------------------------------------------------------------------------
PackDatas(folder,files,out_dir) =
  $(out_dir)/$(folder).pack $(out_dir)/$(folder).h:$(files)
    $(BINLINKER) $(files) $(out_dir)/$(folder).pack TM 128
  return $(out_dir)/$(folder).pack


CopyPackHeader(folders,copy_dir,flag) =
  
  HEADERS[] =
  if $(equal $(flag), true)
    foreach(folder,$(folders))
      header = ./$(folder).h
      $(copy_dir)/$(folder).h:$(header)
        cp $(header) $(copy_dir)
      HEADERS += $(copy_dir)/$(folder).h
      export
    export
  return $(HEADERS)
      

#----------------------------------------------------------------------------
#      k
#----------------------------------------------------------------------------
CompFiles(array) =
  TARGET_OBJS[] =

  foreach(filename, $(array))
    $(filename)_lz:$(filename)
      $(CTR_COMP) -lex -o $(filename)_lz $(filename)

    TARGET_OBJS += $(filename)_lz
    export

  return $(TARGET_OBJS)

###------------------------------
# \[g
SortFiles(files) = 
  AFTER_FILES[] =
  
  foreach(onefile,$(files))
    echo $(onefile) >> sort.txt

  if $(file-exists sort.txt)
    AFTER_FILES = $(shell sort sort.txt)
    rm -f sort.txt
    export
  return $(AFTER_FILES)

#----------------------------------------------------------------------------
#      oCiXg
#----------------------------------------------------------------------------
BINARY_FILES[] =
if $(or $(equal $(TARGETS), .DEFAULT) $(equal $(TARGETS), build))
  if $(equal $(CONVERTUSER), true)

    if $(equal $(PACK_FLAG), false)
    else
      #PACKĂAA[JCu
      foreach(folder,$(RESOURCE_DIR))
        FILES = $(glob i, ./$(folder)/*)
        FILES = $(SortFiles $(FILES))
        BINARY_FILES += $(PackDatas $(folder), $(FILES), ./)
        BINARY_FILES = $(SortFiles $(BINARY_FILES))
        export
      export

    if $(equal $(COMP_FLAG), true)
      BINARY_FILES = $(CompFiles $(BINARY_FILES))
      export
    export
  export


#----------------------------------------------------------------------------
#      rh[
#----------------------------------------------------------------------------
build: $(TARGET_DIR)/$(ARC_FILE).garc $(TARGET_DIR)/$(ARC_FILE).gaix $(CopyPackHeader $(RESOURCE_DIR),$(BINLINKER_HEADER_DIR),$(PACK_FLAG))

$(TARGET_DIR)/$(ARC_FILE).garc $(TARGET_DIR)/$(ARC_FILE).gaix:$(ARC_FILE).garc $(ARC_FILE).gaix
  cp $(ARC_FILE).garc $(TARGET_DIR)
  cp $(ARC_FILE).gaix $(TARGET_DIR)

#ƁAUSER삵Ȃ
if $(equal $(CONVERTUSER), true)
  $(ARC_FILE).garc $(ARC_FILE).gaix:$(BINARY_FILES)
    $(GFARC) $(ARC_FILE) $(BINARY_FILES)
  

clean:
  rm -f $(TARGET_DIR)/$(ARC_FILE).garc
  rm -f $(TARGET_DIR)/$(ARC_FILE).gaix
  
if $(equal $(CONVERTUSER), true)
  clean:
    rm -f $(ARC_FILE).garc
    rm -f $(ARC_FILE).gaix
    rm -f *.pack
    rm -f *.pack_lz
    rm -f *.h
    rm -f *.tmp


DefineDefaultRules()


