# smakefile for Yak
#
# WARNING: use SCOPTIONS
#
# This smakefile may look badly formatted with all these long dependencies lines but
# that was done in order to avoid smake bugs.
#

.SILENT

DISTRIBUTION_DIR=/Yak_2.11
ARCHIVE_SRC=Yak211Src.lha
#ARCHIVE_SRC=Yak211Src.lzx

ROOT_DIR=
ROOT_OBJ_DIR=$(ROOT_DIR)Obj/
ROOT_INC_DIR=$(ROOT_DIR)Include/
PATH_LIB=$(ROOT_LIB_DIR)Lib/wb2cli.o

ROOT_OBJS= $(ROOT_OBJ_DIR)GetScreenBox.o $(ROOT_OBJ_DIR)GetPubScreen.o $(ROOT_OBJ_DIR)Version.o 

LOCALE_DIR=$(ROOT_DIR)locale/
LOCALE_INCLUDE=$(LOCALE_DIR)yak_locale_strings.h

#-------------------------------------------
# Object files needed to build Yak commodity
#-------------------------------------------

WBS_DIR=$(ROOT_DIR)WBStartup/
WBS_PROGRAM=$(WBS_DIR)Yak
WBS_OBJ_DIR=$(WBS_DIR)Obj/
WBS_INC_DIR=$(WBS_DIR)Include/

WBS_OBJS= $(WBS_OBJ_DIR)main.o \
	$(WBS_OBJ_DIR)pri.o \
	$(WBS_OBJ_DIR)Hotkey_actions.o \
	$(WBS_OBJ_DIR)LastActiveWindow.o \
	$(WBS_OBJ_DIR)beep.o \
	$(WBS_OBJ_DIR)clickdrive.o \
	$(WBS_OBJ_DIR)BlackBorder.o \
	$(WBS_OBJ_DIR)Patch_libs.o \
	$(WBS_OBJ_DIR)UnixDirs.o \
	$(WBS_OBJ_DIR)MMB_Shift.o \
	$(WBS_OBJ_DIR)ARexx.o \
	$(WBS_OBJ_DIR)FullWorkbench.o \
	$(WBS_OBJ_DIR)CapShift.o \
	$(WBS_OBJ_DIR)Handlers.o \
	$(WBS_OBJ_DIR)hotkey_types.o \
	$(WBS_OBJ_DIR)Settings.o \
	$(WBS_OBJ_DIR)icon.o \
	$(WBS_OBJ_DIR)Requesters.o \
    $(WBS_OBJ_DIR)locale_strings.o

#-------------------------------------------
# Object files needed to build Prefs program
#-------------------------------------------

PREFS_DIR=$(ROOT_DIR)Prefs/
PREFS_OBJ_DIR=$(PREFS_DIR)Obj/
PREFS_INC_DIR=$(PREFS_DIR)Include/

PREFS_OBJS= $(PREFS_OBJ_DIR)KeyDef.o $(PREFS_OBJ_DIR)hotkey_types.o $(PREFS_OBJ_DIR)Settings.o $(PREFS_OBJ_DIR)icon.o $(PREFS_OBJ_DIR)Handlers.o $(PREFS_OBJ_DIR)Requesters.o $(PREFS_OBJ_DIR)Root_Menus.o $(PREFS_OBJ_DIR)sas_lists.o $(PREFS_OBJ_DIR)Locale_strings.o 

# --- GadTools Version ---

GADTOOLS_DIR=$(PREFS_DIR)GadTools/
GADTOOLS_PROGRAM=$(GADTOOLS_DIR)Yak
GADTOOLS_OBJ_DIR=$(GADTOOLS_DIR)Obj/
GADTOOLS_INC_DIR=$(GADTOOLS_DIR)Include/

GADTOOLS_OBJS= $(GADTOOLS_OBJ_DIR)Root_Window.o \
	$(GADTOOLS_OBJ_DIR)misc_window.o \
	$(GADTOOLS_OBJ_DIR)blank_window.o \
	$(GADTOOLS_OBJ_DIR)keydef_window.o \
	$(GADTOOLS_OBJ_DIR)MouseCycling_Window.o \
	$(GADTOOLS_OBJ_DIR)Options_Window.o \
	$(GADTOOLS_OBJ_DIR)hotkey_window.o \
	$(GADTOOLS_OBJ_DIR)Main.o \
	$(GADTOOLS_OBJ_DIR)GUI.o \
	$(GADTOOLS_OBJ_DIR)filereq.o


# --- BGUI Version ---

BGUI_DIR=$(PREFS_DIR)BGUI/
BGUI_PROGRAM=$(BGUI_DIR)Yak
BGUI_OBJ_DIR=$(BGUI_DIR)Obj/
BGUI_INC_DIR=$(BGUI_DIR)Include/

BGUI_OBJS  = $(BGUI_OBJ_DIR)Root_Window.o \
	$(BGUI_OBJ_DIR)Blank_Window.o \
	$(BGUI_OBJ_DIR)Misc_Window.o \
	$(BGUI_OBJ_DIR)Mousecycling_Window.o \
	$(BGUI_OBJ_DIR)HotKey_Window.o \
	$(BGUI_OBJ_DIR)KeyDef_Window.o \
	$(BGUI_OBJ_DIR)Options_Window.o \
	$(BGUI_OBJ_DIR)Main.o \
	$(BGUI_OBJ_DIR)GUI.o \
    $(BGUI_OBJ_DIR)Filereq.o


#-------------------------------------
# Object files needed to build Convert
#-------------------------------------

CONV_DIR=$(PREFS_DIR)Convert/
CONV_PROGRAM=$(CONV_DIR)Convert
CONV_OBJ_DIR=$(CONV_DIR)Obj/
CONV_INC_DIR=$(CONV_DIR)Include/

CONV_OBJS = $(CONV_OBJ_DIR)Main.o \
            $(CONV_OBJ_DIR)Settings.o \
            $(CONV_OBJ_DIR)Hotkey_types.o \
            $(CONV_OBJ_DIR)Handlers.o \
		    $(CONV_OBJ_DIR)Hotkey_naming.o \
            $(PREFS_OBJ_DIR)Locale_strings.o \
            $(PREFS_OBJ_DIR)icon.o \
            $(PREFS_OBJ_DIR)sas_lists.o \
			$(ROOT_OBJ_DIR)version.o

#-------------------------------------------
# General Stuff
#-------------------------------------------

INC_FLAGS= IDIR=$(ROOT_INC_DIR) IDIR=$(LOCALE_DIR)

WBS_FLAGS= IDIR=$(WBS_INC_DIR) 

PREFS_FLAGS= IDIR=$(PREFS_INC_DIR) DEFINE PREFS OBJNAME

GADTOOLS_FLAGS= DEFINE GADTOOLS $(PREFS_FLAGS)

BGUI_FLAGS= DEFINE BGUI $(PREFS_FLAGS)

CONV_FLAGS= IDIR=$(PREFS_INC_DIR) IDIR=$(CONV_INC_DIR) DEFINE CONV OBJNAME

CC=sc $(INC_FLAGS)


All: $(WBS_PROGRAM) $(GADTOOLS_PROGRAM) $(CONV_PROGRAM) $(BGUI_PROGRAM)

yak.gst: syms.c
	$(CC) DEFINE __USE_SYSBASE MakeGlobalSymbolTable yak.gst syms.c

ALWAYS:
	@echo "Yak build"

.c.o:
	$(CC) $< $(WBS_FLAGS) OBJNAME $@


#----------------------------
# Common object files
#----------------------------

$(ROOT_OBJ_DIR)GetPubScreen.o: $(ROOT_DIR)GetPubScreen.c $(ROOT_INC_DIR)GetPubScreen.h
	$(CC) $< OBJNAME $@

$(ROOT_OBJ_DIR)GetScreenBox.o: $(ROOT_DIR)GetScreenBox.c $(ROOT_INC_DIR)GetScreenBox.h
	$(CC) $< OBJNAME $@

$(ROOT_OBJ_DIR)Version.o:  ALWAYS
	$(CC) $(ROOT_DIR)Version.c OBJNAME $(ROOT_OBJ_DIR)Version.o

#-------------------------------------------
# Yak commodity
#
# The following object files are built using 
# previously defined .c.o rule
#-------------------------------------------

$(WBS_PROGRAM): $(WBS_PROGRAM).debug 
	slink TO $(WBS_PROGRAM) FROM $(WBS_PROGRAM).debug STRIPDEBUG

$(WBS_PROGRAM).debug: yak.gst $(ROOT_OBJS) $(WBS_OBJS) 
	slink <WITH <
		FROM LIB:c.o $(ROOT_OBJS)+$(WBS_OBJS)
		LIB $(PATH_LIB)+LIB:sc.lib+LIB:amiga.lib 
		SMALLCODE SMALLDATA VERBOSE 
		TO $(WBS_PROGRAM).debug
		< 

$(WBS_OBJ_DIR)ARexx.o: $(WBS_DIR)Arexx.c $(WBS_INC_DIR)Arexx.h $(ROOT_INC_DIR)Requesters.h $(LOCALE_INCLUDE)

$(WBS_OBJ_DIR)blackborder.o: $(WBS_DIR)BlackBorder.c $(WBS_INC_DIR)BlackBorder.h

$(WBS_OBJ_DIR)beep.o: $(WBS_DIR)Beep.c $(WBS_INC_DIR)Beep.h

$(WBS_OBJ_DIR)clickdrive.o: $(WBS_DIR)ClickDrive.c $(WBS_INC_DIR)ClickDrive.h

$(WBS_OBJ_DIR)Handlers.o: $(ROOT_DIR)Handlers.c $(ROOT_INC_DIR)Handlers.h $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Handlers.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Requesters.h $(ROOT_INC_DIR)GetScreenBox.h $(ROOT_INC_DIR)GetPubScreen.h $(ROOT_INC_DIR)Settings.h $(WBS_INC_DIR)Arexx.h $(WBS_INC_DIR)LastActiveWindow.h $(WBS_INC_DIR)CapShift.h $(LOCALE_INCLUDE)

$(WBS_OBJ_DIR)Hotkey_actions.o: $(WBS_DIR)Hotkey_actions.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(ROOT_INC_DIR)WbPath.h $(WBS_INC_DIR)LastActiveWindow.h $(LOCALE_INCLUDE)

$(WBS_OBJ_DIR)hotkey_types.o: $(ROOT_DIR)hotkey_types.c $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Requesters.h $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Code.h $(LOCALE_INCLUDE) 

$(WBS_OBJ_DIR)Icon.o: $(ROOT_DIR)Icon.c $(ROOT_INC_DIR)Icon.h 

$(WBS_OBJ_DIR)LastActiveWindow.o: $(WBS_DIR)LastActiveWindow.c $(WBS_INC_DIR)LastActiveWindow.h

$(WBS_OBJ_DIR)locale_strings.o: $(LOCALE_DIR)yak_locale_strings.c $(ROOT_INC_DIR)Requesters.h $(LOCALE_INCLUDE)

$(WBS_OBJ_DIR)main.o: $(WBS_DIR)main.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(ROOT_INC_DIR)icon.h $(ROOT_INC_DIR)Requesters.h $(ROOT_INC_DIR)Settings.h $(ROOT_INC_DIR)Version.h $(WBS_INC_DIR)beep.h $(WBS_INC_DIR)Pri.h $(WBS_INC_DIR)UnixDirs.h  $(LOCALE_INCLUDE) 

$(WBS_OBJ_DIR)MMB_Shift.o: $(WBS_DIR)MMB_Shift.c $(WBS_INC_DIR)MMB_Shift.h

$(WBS_OBJ_DIR)Patch_libs.o: $(WBS_DIR)Patch_Libs.c $(WBS_INC_DIR)Patch_Libs.h

$(WBS_OBJ_DIR)Pri.o: $(WBS_DIR)Pri.c $(ROOT_INC_DIR)Yak.h

$(WBS_OBJ_DIR)Requesters.o: $(ROOT_DIR)Requesters.c $(ROOT_INC_DIR)Requesters.h $(ROOT_INC_DIR)Yak.h

$(WBS_OBJ_DIR)Settings.o: $(ROOT_DIR)Settings.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(WBS_INC_DIR)ClickDrive.h $(WBS_INC_DIR)BlackBorder.h $(LOCALE_INCLUDE) 

$(WBS_OBJ_DIR)UnixDirs.o: $(WBS_DIR)UnixDirs.c $(WBS_INC_DIR)UnixDirs.h $(WBS_INC_DIR)Patch_Libs.h

$(WBS_OBJ_DIR)FullWorkbench.o: $(WBS_DIR)FullWorkbench.c $(WBS_INC_DIR)FullWorkbench.h

$(WBS_OBJ_DIR)CapShift.o: $(WBS_DIR)CapShift.c $(WBS_INC_DIR)CapShift.h



#-------------------------------------------
# Prefs program  (all versions)
#-------------------------------------------

$(PREFS_OBJ_DIR)Settings.o: $(ROOT_DIR)Settings.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)sas_lists.h $(LOCALE_INCLUDE) 
	$(CC) $* $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)keydef.o: $(PREFS_DIR)keydef.c $(ROOT_INC_DIR)Code.h $(PREFS_INC_DIR)keydef.h
	$(CC) $(PREFS_DIR)keydef.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)sas_lists.o: $(PREFS_DIR)sas_lists.c $(PREFS_INC_DIR)sas_lists.h
	$(CC) $(PREFS_DIR)sas_lists.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)Locale_strings.o: $(LOCALE_DIR)yak_locale_strings.c $(LOCALE_INCLUDE)
	$(CC) $(LOCALE_DIR)yak_locale_strings.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)hotkey_types.o: $(ROOT_DIR)hotkey_types.c $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(ROOT_INC_DIR)Yak.h $(LOCALE_INCLUDE)
	$(CC) $(ROOT_DIR)hotkey_types.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)icon.o: $(ROOT_DIR)icon.c $(ROOT_INC_DIR)icon.h 
	$(CC) $(ROOT_DIR)icon.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)Handlers.o: $(ROOT_DIR)Handlers.c $(ROOT_INC_DIR)Yak.h $(WBS_INC_DIR)beep.h
	$(CC) $(ROOT_DIR)Handlers.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)Requesters.o: $(ROOT_DIR)Requesters.c $(ROOT_INC_DIR)Requesters.h $(ROOT_INC_DIR)Yak.h
	$(CC) $(ROOT_DIR)Requesters.c $(PREFS_FLAGS) $@

$(PREFS_OBJ_DIR)Root_menus.o: $(PREFS_DIR)Root_menus.c $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(LOCALE_INCLUDE) 
	$(CC) $(PREFS_DIR)Root_menus.c $(GADTOOLS_FLAGS) $@

#-------------------------------------------
# Prefs program  (GadTools version)
#-------------------------------------------

$(GADTOOLS_PROGRAM): $(GADTOOLS_PROGRAM).debug 
        slink TO $(GADTOOLS_PROGRAM) FROM $(GADTOOLS_PROGRAM).debug STRIPDEBUG

$(GADTOOLS_PROGRAM).debug: yak.gst $(ROOT_OBJS) $(PREFS_OBJS) $(GADTOOLS_OBJS) 
	slink <WITH <
		FROM LIB:c.o $(ROOT_OBJS)+$(PREFS_OBJS)+$(GADTOOLS_OBJS)
		LIB LIB:sc.lib+LIB:amiga.lib 
		SMALLCODE SMALLDATA VERBOSE 
		MAP RAM:Yak.map H,X,S,F,L,O HEIGHT 0 PLAIN SWIDTH 16
		TO $(GADTOOLS_PROGRAM).debug
		< 

$(GADTOOLS_OBJ_DIR)Main.o: $(PREFS_DIR)main.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Handlers.h  $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)icon.h $(ROOT_INC_DIR)Version.h $(PREFS_INC_DIR)Gui.h $(LOCALE_INCLUDE) 
	$(CC) $(PREFS_DIR)main.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)GUI.o: $(PREFS_DIR)GUI.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Version.h $(PREFS_INC_DIR)GUI.h $(LOCALE_INCLUDE)
	$(CC) $(PREFS_DIR)GUI.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)Root_Window.o: $(GADTOOLS_DIR)Root_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Root_Window.h $(LOCALE_INCLUDE)
	$(CC) $(GADTOOLS_DIR)Root_Window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)Misc_Window.o: $(GADTOOLS_DIR)misc_window.c $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(LOCALE_INCLUDE) 
	$(CC) $(GADTOOLS_DIR)misc_window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)MouseCycling_Window.o: $(GADTOOLS_DIR)MouseCycling_Window.c $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)MouseCycling_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(GADTOOLS_DIR)MouseCycling_Window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)Options_Window.o: $(GADTOOLS_DIR)Options_window.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Options_window.h $(LOCALE_INCLUDE) 
	$(CC) $(GADTOOLS_DIR)Options_window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)hotkey_window.o: $(GADTOOLS_DIR)hotkey_window.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(LOCALE_INCLUDE)
	$(CC) $(GADTOOLS_DIR)hotkey_window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)blank_window.o: $(GADTOOLS_DIR)blank_window.c $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(LOCALE_INCLUDE)
	$(CC) $(GADTOOLS_DIR)blank_window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)keydef_window.o: $(GADTOOLS_DIR)keydef_window.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)keydef_window.h $(LOCALE_INCLUDE) 
	$(CC) $(GADTOOLS_DIR)keydef_window.c $(GADTOOLS_FLAGS) $@

$(GADTOOLS_OBJ_DIR)filereq.o: $(PREFS_DIR)filereq.c $(PREFS_INC_DIR)filereq.h
	$(CC) $(PREFS_DIR)filereq.c $(GADTOOLS_FLAGS) $@

#-------------------------------------------
# Prefs program  (BGUI version) NMC
#-------------------------------------------
#
$(BGUI_PROGRAM) : $(BGUI_PROGRAM).debug 
        slink TO $(BGUI_PROGRAM) FROM $(BGUI_PROGRAM).debug STRIPDEBUG

$(BGUI_PROGRAM).debug: yak.gst $(ROOT_OBJS) $(PREFS_OBJS) $(BGUI_OBJS) 
	slink <WITH <
		FROM LIB:c.o  $(ROOT_OBJS)+$(PREFS_OBJS)+$(BGUI_OBJS)
		LIB LIB:sc.lib+LIB:amiga.lib 
		SMALLCODE SMALLDATA
		TO $(BGUI_PROGRAM).debug
		< 

$(BGUI_OBJ_DIR)Main.o: $(PREFS_DIR)main.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Handlers.h  $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)icon.h $(ROOT_INC_DIR)Version.h $(PREFS_INC_DIR)Gui.h $(LOCALE_INCLUDE) 
	$(CC) $(PREFS_DIR)main.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)GUI.o: $(PREFS_DIR)GUI.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Version.h $(PREFS_INC_DIR)GUI.h $(LOCALE_INCLUDE)
	$(CC) $(PREFS_DIR)GUI.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)Root_Window.o: $(BGUI_DIR)Root_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Root_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)Root_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)Blank_Window.o: $(BGUI_DIR)Blank_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Blank_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)Blank_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)Misc_Window.o: $(BGUI_DIR)Misc_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Misc_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)Misc_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)MouseCycling_Window.o: $(BGUI_DIR)MouseCycling_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)MouseCycling_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)MouseCycling_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)HotKey_Window.o: $(BGUI_DIR)HotKey_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)HotKey_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)HotKey_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)KeyDef_Window.o: $(BGUI_DIR)KeyDef_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)KeyDef_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)KeyDef_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)Options_Window.o: $(BGUI_DIR)Options_Window.c $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Options_Window.h $(LOCALE_INCLUDE) 
	$(CC) $(BGUI_DIR)Options_Window.c $(BGUI_FLAGS) $@

$(BGUI_OBJ_DIR)filereq.o: $(PREFS_DIR)filereq.c $(PREFS_INC_DIR)filereq.h
	$(CC) $(PREFS_DIR)filereq.c $(BGUI_FLAGS) $@

#
#-------------------------------------------
# Convert
#-------------------------------------------

$(CONV_PROGRAM): $(CONV_PROGRAM).debug
        slink TO "$(CONV_PROGRAM)" FROM $(CONV_PROGRAM).debug STRIPDEBUG

$(CONV_PROGRAM).debug: $(CONV_OBJS)
		slink TO "$(CONV_PROGRAM).debug" FROM LIB:c.o+$(CONV_OBJS) \
        LIB LIB:sc.lib LIB:amiga.lib SMALLCODE SMALLDATA VERBOSE 

$(CONV_OBJ_DIR)main.o: $(CONV_DIR)main.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Hotkey_types.h $(LOCALE_INCLUDE) 
	$(CC) $(CONV_DIR)main.c $(CONV_FLAGS) $@

$(CONV_OBJ_DIR)Handlers.o: $(ROOT_DIR)Handlers.c $(ROOT_INC_DIR)Yak.h $(WBS_INC_DIR)beep.h 
	$(CC) $(ROOT_DIR)Handlers.c $(CONV_FLAGS) $@

$(CONV_OBJ_DIR)hotkey_types.o: $(ROOT_DIR)hotkey_types.c $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(ROOT_INC_DIR)Yak.h $(LOCALE_INCLUDE) 
	$(CC) $(ROOT_DIR)hotkey_types.c $(CONV_FLAGS) $@

$(CONV_OBJ_DIR)Settings.o: $(ROOT_DIR)Settings.c $(ROOT_INC_DIR)Yak.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Handlers.h $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)sas_lists.h $(LOCALE_INCLUDE) 
	$(CC) $(ROOT_DIR)Settings.c $(CONV_FLAGS) $@

$(CONV_OBJ_DIR)Options.o: $(PREFS_DIR)Options_window.c $(ROOT_INC_DIR)Code.h $(ROOT_INC_DIR)Version.h $(ROOT_INC_DIR)Hotkey_types.h $(ROOT_INC_DIR)Yak.h $(PREFS_INC_DIR)gui.h $(PREFS_INC_DIR)Options_window.h $(LOCALE_INCLUDE) 
	$(CC) $(PREFS_DIR)Options_window.c $(CONV_FLAGS) $@

$(CONV_OBJ_DIR)Hotkey_naming.o: $(CONV_DIR)Hotkey_naming.c $(ROOT_INC_DIR)Hotkey_types.h $(LOCALE_INCLUDE)
	$(CC) $(CONV_DIR)Hotkey_naming.c $(CONV_FLAGS) $@


#-------------------------------------------
# Locale Stuff
#-------------------------------------------

$(LOCALE_INCLUDE): $(LOCALE_DIR)yak.cd $(LOCALE_DIR)yak_h.sd
		flexcat $(LOCALE_DIR)yak.cd $(LOCALE_INCLUDE)=$(LOCALE_DIR)yak_h.sd
				

$(LOCALE_DIR)yak_locale_strings.c: $(LOCALE_DIR)yak.cd $(LOCALE_DIR)yak_c.sd
		flexcat $(LOCALE_DIR)yak.cd $(LOCALE_DIR)yak_locale_strings.c=$(LOCALE_DIR)yak_c.sd

catalog: $(LOCALE_DIR)francais.ct $(LOCALE_DIR)dansk.ct $(LOCALE_DIR)deutsch.ct $(LOCALE_DIR)italiano.ct $(LOCALE_DIR)svenska.ct
		-makedir catalogs
		-makedir catalogs/franais
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)francais.ct catalog catalogs/franais/yak.catalog
        copy catalogs/franais/yak.catalog locale:catalogs/franais/yak.catalog
		-makedir catalogs/suomi
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)suomi.ct catalog catalogs/suomi/yak.catalog
        copy catalogs/suomi/yak.catalog locale:catalogs/suomi/yak.catalog
		-makedir catalogs/dansk
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)dansk.ct catalog catalogs/dansk/yak.catalog
        copy catalogs/dansk/yak.catalog locale:catalogs/dansk/yak.catalog
		-makedir catalogs/deutsch
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)deutsch.ct catalog catalogs/deutsch/yak.catalog
        copy catalogs/deutsch/yak.catalog locale:catalogs/deutsch/yak.catalog
		-makedir catalogs/italiano
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)italiano.ct catalog catalogs/italiano/yak.catalog
        copy catalogs/italiano/yak.catalog locale:catalogs/italiano/yak.catalog
		-makedir catalogs/nederlands
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)nederlands.ct catalog catalogs/nederlands/yak.catalog
        copy catalogs/nederlands/yak.catalog locale:catalogs/nederlands/yak.catalog
		-makedir catalogs/svenska
        catcomp $(LOCALE_DIR)yak.cd $(LOCALE_DIR)svenska.ct catalog catalogs/svenska/yak.catalog
        copy catalogs/svenska/yak.catalog locale:catalogs/svenska/yak.catalog


clean:
        -delete $(ROOT_OBJ_DIR)\#?
        -delete $(WBS_OBJ_DIR)\#?
        -delete $(PREFS_OBJ_DIR)\#?.o
        -delete $(GADTOOLS_OBJ_DIR)\#?.o
        -delete $(MUI_OBJ_DIR)\#?.o
        -delete $(BGUI_OBJ_DIR)\#?.o
        -delete $(CONV_OBJ_DIR)\#?.o
		-delete \#?!
		-delete $(LOCALE_DIR)\#?! $(LOCALE_DIR)\yak_locale_strings.\#?
		-delete $(ROOT_DIR)\#?!
		-delete $(WBS_DIR)\#?!
		-delete $(PREFS_DIR)\#?!
		-delete $(GADTOOLS_DIR)\#?!
		-delete $(MUI_DIR)\#?!
		-delete $(BGUI_DIR)\#?!
		-delete $(CONV_DIR)\#?!
		-delete $(ROOT_INC_DIR)\#?!
		-delete $(WBS_INC_DIR)\#?!
		-delete $(PREFS_INC_DIR)\#?!
		-delete $(GADTOOLS_INC_DIR)\#?!
		-delete $(MUI_INC_DIR)\#?!
		-delete $(BGUI_INC_DIR)\#?!
		-delete $(CONV_INC_DIR)\#?!
		-delete $(DISTRIBUTION_DIR)/\#?!
		-delete $(DISTRIBUTION_DIR)/Installation/\#?!
		-delete $(DISTRIBUTION_DIR)/Docs/English/\#?!
		-delete $(DISTRIBUTION_DIR)/Docs/Franais/\#?!
		-delete $(DISTRIBUTION_DIR)/Docs/Deutsch/\#?!
		-delete $(DISTRIBUTION_DIR)/Docs/Italiano/\#?!
		-delete $(DISTRIBUTION_DIR)/MoreIcons/\#?!
		-delete $(WBS_PROGRAM).debug $(GADTOOLS_PROGRAM).debug $(MUI_PROGRAM).debug $(BGUI_PROGRAM).debug $(CONV_PROGRAM).debug

big_clean: clean
        -delete $(ROOT_DIR)yak.gst $(ROOT_DIR)syms.o

distribution: big_clean catalog
		-delete $(DISTRIBUTION_DIR)/WBStartup/Yak
		rename $(WBS_PROGRAM) $(DISTRIBUTION_DIR)/WBStartup/Yak
		-delete $(DISTRIBUTION_DIR)/Prefs/Gadtools/Yak
		rename $(GADTOOLS_PROGRAM) $(DISTRIBUTION_DIR)/Prefs/Gadtools/Yak
		-delete $(DISTRIBUTION_DIR)/Prefs/BGUI/Yak
		rename $(BGUI_PROGRAM) $(DISTRIBUTION_DIR)/Prefs/BGUI/Yak
		-delete $(DISTRIBUTION_DIR)/Convert
		rename $(CONV_PROGRAM) $(DISTRIBUTION_DIR)/Convert
		-delete $(DISTRIBUTION_DIR)/Catalogs/franais/Yak.catalog
		rename catalogs/franais/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/franais/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/italiano/Yak.catalog
		rename catalogs/italiano/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/italiano/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/deutsch/Yak.catalog
		rename catalogs/deutsch/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/deutsch/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/svenska/Yak.catalog
		rename catalogs/svenska/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/svenska/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/dansk/Yak.catalog
		rename catalogs/dansk/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/dansk/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/suomi/Yak.catalog
		rename catalogs/suomi/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/suomi/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/nederlands/Yak.catalog
		rename catalogs/nederlands/Yak.catalog $(DISTRIBUTION_DIR)/Catalogs/nederlands/Yak.catalog
		-delete $(DISTRIBUTION_DIR)/Catalogs/Yak.ct
		rename $(LOCALE_DIR)Yak.ct $(DISTRIBUTION_DIR)/Catalogs/Yak.ct
		-delete $(DISTRIBUTION_DIR)/Catalogs/Yak.cd		
		copy $(LOCALE_DIR)Yak.cd $(DISTRIBUTION_DIR)/Catalogs/Yak.cd
		-delete $(DISTRIBUTION_DIR)/Catalogs/Nederlands.ct
		copy $(LOCALE_DIR)Nederlands.ct $(DISTRIBUTION_DIR)/Catalogs/Nederlands.ct


archive_src: big_clean 
		-delete /$(ARCHIVE_SRC) $(WBS_PROGRAM) $(GADTOOLS_PROGRAM) \
                $(MUI_PROGRAM) $(BGUI_PROGRAM) $(CONV_PROGRAM) $(CONV_PROGRAM) $(ROOT_DIR)compiler.log
		Execute <<
				cd / 
				lha a -arx  $(ARCHIVE_SRC) Yak_2.11_src Yak_2.11_src.info 
#				lzx a -a -m -r -x -3  $(ARCHIVE_SRC) Yak_2.11_src Yak_2.11_src.info 
				List $(ARCHIVE_SRC)
		<


install:
	-delete sys:wbstartup/Yak
	copy $(WBS_PROGRAM) sys:wbstartup/Yak
	-delete sys:Prefs/Yak
	copy $(GADTOOLS_PROGRAM) sys:Prefs/Yak

