#!/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[] = nakamura ohta_tetsuji


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


#----------------------------------------------------------------------------
#      ʕ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/app/tool


#----------------------------------------------------------------------------
#      ˑt@C
#
#      RESOURCE_2D_DIRɂ́ACAEg̃f[^i[tH_
#      RESOURCE_3D_DIRɂ́ARD\[X@p[eBN\[Xi[tH_Lq
#
#      2D\[X̃tH_́Aȉ̂悤ȍ\ɂĂB
#      hoge/
#      @@.clyt
#          .clan
#          .tga
#
#      3D\[X̃Ro[g͈ȉ̂悤ȍ\ɂĂB
#      hoge/
#          .cmdl
#          .cmata
#          .cskla
#          Textures/
#                  .ctex    Kvctex́ASTexturestH_Ɋi[
#      
#      ftHgݒł́AeNX`́Acmdlcmataɓ܂Bi̋MODEL3D_OPTINőI\łBj
#
#   j
#		RESOURCE_2D_DIR[] = layout00 layout01
#		RESOURCE_3D_DIR[] = model00 model01
#
#----------------------------------------------------------------------------
RESOURCE_2D_DIR[] = menu_cursor_res
RESOURCE_3D_DIR[] = 


##-----------------------------------------------------------------------------
# * CAEgf[^̐IvV
#     [option]
#         -h    wv\܂B
#         -f    tHgCAEgɊ܂߂Ȃ
#         -t    eNX`A[JCuɊ܂߂ȂB
#         -l    CAEgA[JCuɊ܂߂ȂB
#         -d    [JfBNg̃t@CȊO̓A[JCuɊ܂߂ȂB 
#         -rtex XOx]eNX`gpăRo[g
#               ̋@\gƂ́AtH_ȉ̍\ɂKvB
#               Ro[gtH_/
#                                       hoge.clyt
#                                       hoge.clan
#                                       eNX`.tga
#                                       eNX`.tga
#                                       eNX`.tga
#                                       texture/
#                                               90x]eNX`.tga
#                                               90x]eNX`.tga
#                                               90x]eNX`.tga
#         -notrn O̒usȂ
#         -textnum[{mە] eLXgyC̒̕w`FbNB
#            j-textnum48   w`FbNĂȂꍇ @[{mە]ɂB
#                               w蕶񒷁@@yCɐݒ肳Ă镶̕@ȂG[I
#
#
#         ̑@LayoutConverter̃IvVwł܂B
#         --no-convert-cvtrchar     eLXg{bNXɊ܂܂PUi𕶎R[hɕϊȂB
#         --omit-samekey            ŏAj[VԂŒlωȂꍇɂ́AL[o͂ȂB
#         --omit-samekey-all        Aj[VԂŒlωȂꍇɂ́AL[o͂ȂB
#         --omit-nokey-all          L[f[^Ȃꍇɂ́AAj[Vf[^o͂܂B
#         --bake-infinity           L[t[ԊOu萔vȊÔƂɁAJ[uČ悤ɃL[s[gďo͂B
#         --no-taginfo              L[t[ԃ^Ȍ܂߂܂BAj[Vԃ^O̒Pʂŏo͂ƂɗLłB
#         --no-check-version        CAEgt@C̃o[W`FbN܂B\n"
#         --cvtr-ref-tex-only       }eAeNX`p^[AjŎۂɎgpĂeNX`t@C܂B
#
##-----------------------------------------------------------------------------
LAYOUT_OPTION = -f -d 



##-----------------------------------------------------------------------------
#    3DfRo[g@IvV
#    [option]
#    @ftHg@eNX`́Acmdlcmataɓ܂B
#
#      -ntex      eNX`́AeNX`ŃoCiB
#                cmdlcmataɂ́Agݍ܂ȂB
#      
#    
##-----------------------------------------------------------------------------
MODEL3D_OPTIN = 


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

#----------------------------------------------------------------------------
#
#   R~bgSVNݒ̂肢B
#
#   ȉ̃t@CSVNǗKv܂B
#   ݒ肢܂B
#
#   ./*.tmp
#   ./*.omc
#   ./CAEg̃tH_/tmp
#   ./CAEg̃tH_/binary
#   ./CAEg̃tH_/*.arc
#   ./CAEg̃tH_/*.namedat
#
#----------------------------------------------------------------------------

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




















#----------------------------------------------------------------------------
#      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


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

#----------------------------------------------------------------------------
#  CAEgRo[g
#
#  param array    folderz
#  param  option  Ro[gIvV
#----------------------------------------------------------------------------
LayoutsConvert(array,option) =
  TARGET_OBJS[] =
  
  foreach(folder,$(array))
    CONVERT_OBJ = $(glob $(folder)/*.clyt) $(glob i, $(folder)/*.clan) $(glob i, $(folder)/*.tga)
    TARGET_OBJS += $(MakeLytDatDir $(folder),$(folder),$(CONVERT_OBJ),$(option))
    export
  
  return $(TARGET_OBJS)


#----------------------------------------------------------------------------
#  CAEgwb_|Rs[
#
#  param array          folderz
#  param  header_dir    wb_[Rs[
#----------------------------------------------------------------------------
LayoutsHeaderCopy(array,header_dir) =
  TARGET_OBJS[] = 
  
  foreach(folder,$(array))
    $(header_dir)/$(folder)_pane.h:$(folder)/$(folder)_pane.h
      cp $(folder)/$(folder)_pane.h $(header_dir)/

    $(header_dir)/$(folder).h:$(folder)/$(folder).h
      cp $(folder)/$(folder).h $(header_dir)/

    TARGET_OBJS += $(header_dir)/$(folder).h
    TARGET_OBJS += $(header_dir)/$(folder)_pane.h
    export
  
  return $(TARGET_OBJS)


#----------------------------------------------------------------------------
#  CAEg̃NA
#
#  param array          folderz
#  param  header_dir    wb_[Rs[
#----------------------------------------------------------------------------
LayoutsClear(array,header_dir) =
  TARGET_OBJS[] =

  foreach(folder,$(array))
    TARGET = $(ClearLytDatDir $(folder), $(folder))
    TARGET_OBJS += $(TARGET)
    
    $(TARGET):
      rm -f $(header_dir)/$(folder).h
      rm -f $(header_dir)/$(folder)_pane.h
    export
  
  return $(TARGET_OBJS)

#----------------------------------------------------------------------------
#  3D\[XRo[g
#
#  param array    folderz
#  param  option  Ro[gIvV
#----------------------------------------------------------------------------
Resource3DConvert(array,option) =
  TARGET_OBJS[] =
  
  #1OɐXgj
  rm -f *.tmp
  
  foreach(folder,$(array))
    INTERMEDIATE_FILES[] = 
    INTERMEDIATE_FILES_TEXTURE_REFERENCE_SOLOVED[] = 
    
    #eNX`QƐ쐬
    echo $(folder)/Textures > $(folder)_list.tmp
    
    #eNX`̓eNX`ŁAł߂B
    if $(equal $(option), -ntex)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmdl)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.ccam)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.clgt)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cenv)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cres)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmata)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmcla)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmtpa)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmtsa)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmdla)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cskla)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cptl)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.csdr)
      TARGET_OBJS += $(G3DTOOL_MakeOneG3dBinaryFileInDirectorySimple $(folder)/binary/$(folder)_texture.bcmdl, $(folder)/Textures) 
      export

      
    #eNX`́AcmdlcmataɌł߂B
    else
      INTERMEDIATE_FILES_TEXTURE_REFERENCE_SOLOVED += $(glob i, $(folder)/*.cmdl)
      INTERMEDIATE_FILES_TEXTURE_REFERENCE_SOLOVED += $(glob i, $(folder)/*.cmata)
      INTERMEDIATE_FILES_TEXTURE_REFERENCE_SOLOVED += $(glob i, $(folder)/*.cmtpa)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.ccam)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.clgt)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cenv)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cres)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmcla)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmtsa)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cmdla)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cskla)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.cptl)
      INTERMEDIATE_FILES += $(glob i, $(folder)/*.csdr)
      export

    #Ro[g
    TARGET_OBJS += $(G3DTOOL_MakeEachG3dBinaryFile $(folder)/binary, $(INTERMEDIATE_FILES), --auto_create_shader=off) 
    TARGET_OBJS += $(G3DTOOL_MakeTextureReferenceSolvedG3dBinaryFileUsingTemporaryUsingDirectoryListSimple $(folder)/binary, $(INTERMEDIATE_FILES_TEXTURE_REFERENCE_SOLOVED), temp_$(folder)_list.txt) 
    export

  return $(TARGET_OBJS)

Resource3DClear(array) =
  TARGET_OBJS[] =

  foreach(folder,$(array))
    ret = $(G3DTOOL_RemoveG3dBinaryAndTemporaryFileInDirectory $(folder)/binary)
    rmdir -f $(folder)/binary
    export 

  return 0


#----------------------------------------------------------------------------
#      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)

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

    BINARY_FILES = $(LayoutsConvert $(RESOURCE_2D_DIR), $(LAYOUT_OPTION)) $(Resource3DConvert $(RESOURCE_3D_DIR), $(MODEL3D_OPTIN))

    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 $(LayoutsHeaderCopy $(RESOURCE_2D_DIR), $(LAYOUT_HEADER_DIR))

$(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:$(LayoutsClear $(RESOURCE_2D_DIR), $(LAYOUT_HEADER_DIR))
    ret = $(Resource3DClear $(RESOURCE_3D_DIR))
    rm -f $(ARC_FILE).garc
    rm -f $(ARC_FILE).gaix
    rm -f *.tmp


DefineDefaultRules()

