#
# rayman4: an isometric rayman game
#

GBA_DIR      = .. ;
TOOLS_DIR    = $(GBA_DIR)/../tools ;

INCLUDE_DIRS = src src/* src/*/src data/* $(GBA_DIR)/milk/systems $(GBA_DIR)/milk/services $(GBA_DIR)/milk/lib $(GBA_DIR)/milk/lib/tool_font $(GBA_DIR)/gba/include $(GBA_DIR)/gba/include/backup $(GBA_DIR)/musyx ;
LIB_DIRS     = $(GBA_DIR)/gba/lib $(GBA_DIR)/milk ;
SRC_DIRS     = . src src/* src/*/src data/*/* data/anim/machine/* $(GBA_DIR)/milk/systems/* $(GBA_DIR)/milk/services/* ;
ALL_TARGETS  = rayman_na rayman_eu ;

include "$(GBA_DIR)/scripts/jambase" ;
include "$(GBA_DIR)/milk/jam_milksrc" ;

depends rayman    : rayman_na ;
depends rayman_eu : rayman4_na.bin ;
depends rayman_na : rayman4_eu.bin ;
depends serv      : serv_na ;
depends serv_na   : libmilkserv_na.a ;
depends serv_eu   : libmilkserv_eu.a ;
depends sys       : libmilksys.a ;

notfile rayman rayman_na rayman_eu serv serv_na serv_eu sys ;

AI_SOURCES =                          
          iso_begoniax.c              
          iso_bego_spell.c            
          iso_button.c                
          iso_crab.c                  
          iso_cutscene.c              
          iso_effect.c                
          iso_firemonster.c           
          iso_flyer.c                 
          iso_gate.c                  
          iso_gem.c                   
          iso_globox.c                
          iso_globox_barrel.c         
          iso_hoodbomber.c            
          iso_hoodbullet.c            
          iso_hoodcaptain.c           
          iso_hoodgrenade.c           
          iso_hoodsoldier.c           
          iso_knight.c                
          iso_machine.c               
          iso_menhir.c                
          iso_pedestal.c              
          iso_piranha.c               
          iso_powerup.c               
          iso_prop.c                  
          iso_raft.c                  
          iso_rayman.c                
          iso_rayfist.c               
          iso_reflux.c                
          iso_reflux_barrel.c         
          iso_reflux_orb.c            
          iso_reflux_wave.c           
          iso_rune.c                  
          iso_slapdash.c              
          iso_spark.c                 
          iso_spiker.c                
          iso_switch.c                
          iso_teensie_cage.c          
          iso_teensy.c                
          iso_toad.c                  
          ;

FRONTEND_SOURCES =                    
          lang_ctx.c                  
          menu_ctx.c                  
          credits_ctx.c               
          sound_ctx.c                 
          menu_ctx32.c                
          splash_ctx.c                
          score_ctx.c                 
          name_ctx.c                  
          erase_ctx.c                 
          reset_save_ctx.c            
          seek_interpolate.c          
          ;

PROG_SOURCES = $(AI_SOURCES) $(FRONTEND_SOURCES)
          ai_group.c                     
          ai_console.c                   
          ai_update.c                    
          boot_ctx.c                     
          camera.c                       
          camera_update.c                
          circle_transition.c            
          cutscene.c                     
          dialog.c                       
          slideshow.c                    
          dr_math.c                      
          game_over.c                    
          gamestate.c                    
          hoodlum_util.c                 
          igmenu.c                       
          igui.c                         
          iso_camera.c                   
          iso_camera32.c                 
          iso_collision.c                
          iso_collision32.c              
          iso_levels.c                   
          iso_physics.c                  
          iso_physics32.c                
          iso_util.c                     
          iso_checkpoint.c               
          isometric.c                    
          level_end.c                    
          level_score_ctx.c              
          list.c                         
          main.c                         
          map_select.c                   
          obj_collision.c                
          obj_collision32.c              
          pal_fx.c                       
          seek.c                         
          shadow.c                       
          wipe_transition.c              
          worldobject.c
          text.c                  
          ;

DATA_SOURCES =                           
          rayman_font.dl            
          igui_data.dl              
          worldobjects.dl         
          rayman_anims.dl           
          prop_anims.dl             
          pup_anims.dl              
          globox_anims.dl           
          hoodlum_bomber_anims.dl   
          hoodlum_captain_anims.dl  
          hoodlum_soldier_anims.dl  
          flyer_anims.dl            
          slapdash_anims.dl         
          knight_anims.dl           
          crab_anims.dl             
          piranha_anims.dl          
          spiker_anims.dl           
          teensy_anims.dl           
          machine_anims.dl          
          raft_anims.dl             
          cutscene_anims.dl         
          splash.dl               
          minimap.dl              
          title_data.dl           
          rayman_music.proj        
          pausemenu.dl             
          begoniax_anims.dl         
          toad_anims.dl             
          firemonster_anims.dl      
          clone_anims.dl            
          ;

LEVEL_SOURCES =                          
          levels.dl               
          levels2.dl              
          levels3.dl              
          ;
          
TEXT_SOURCES =                           
          text.dl                   
          dialog_text.dl            
          tutorial_text.dl          
          teensies_text.dl          
          ;

# We need to manually declare depenencies for generated headers
depends levels.h levels1.h level2.h : text.h splash.h ;

DlRule  text.c  : $(TEXT_SOURCES) ;

Library libmilkserv_eu.a  : $(MILK_SERV_SOURCES) <eu>boot.s $(MILK_SERV_DATA) ;
Library libmilkserv_na.a  : $(MILK_SERV_SOURCES) <na>boot.s $(MILK_SERV_DATA) ;
Library libmilksys.a      : $(MILK_SYS_SOURCES)                               ;

Executable rayman4_na.bin : $(PROG_SOURCES) $(DATA_SOURCES) $(LEVEL_SOURCES) : libmilkserv_na.a libmilksys.a ;
Executable rayman4_eu.bin : $(PROG_SOURCES) $(DATA_SOURCES) $(LEVEL_SOURCES) : libmilkserv_eu.a libmilksys.a ;


Clean clean      : $(CLEAN_LIST) ;
Clean clean_data : $(CLEAN_DATA_LIST) ;

