#
# Makefile for minixfs and friends 
#

MINTINCLUDE = /home/fnaumann/mint-1.15/src/include
FSDIR = /c/multitos

CC = gcc
CFLAGS = -I$(MINTINCLUDE) \
	-Wall -mshort -I. \
	-finline-functions \
	-fno-defer-pop \
	-fomit-frame-pointer \
	-fstrength-reduce \
	-O3
AS = $(CC) -c
ASFLAGS = 
LIBS = -lgnu16


# used tools
MV = mv
CP = cp
RM = rm -f
TOUCH = touch
MKDIR = mkdir
MAKE = make
MKDEP = $(CC) $(CFLAGS) -MM
SED = sed
CRLF = crlf -s

# generic object dir
OBJDIR = objs

$(OBJDIR)/%.d: %.c
	@echo "# Computing dependencies for $*.o"
	@o='o'; \
	$(MKDEP) $< >$@.tmp \
	  && $(SED) "s,^\(.*\)\.o:,$(OBJDIR)/\1.$$o $@:," < $@.tmp > $@ \
	  && $(RM) $@.tmp

$(OBJDIR)/%.o: %.c
	@echo "# Compiling $*.c ..."
	@$(CC) $(CFLAGS) -c $< -o $@

$(OBJDIR)/%.o: %.s
	@echo "# Compiling $*.s ..."
	@$(AS) $(ASFLAGS) -c $< -o $@

COBJS = \
	$(OBJDIR)/minixfs.o \
	$(OBJDIR)/minixdev.o \
	$(OBJDIR)/dir.o \
	$(OBJDIR)/inode.o \
	$(OBJDIR)/zone.o \
	$(OBJDIR)/main.o \
	$(OBJDIR)/trans.o \
	$(OBJDIR)/misc.o \
	$(OBJDIR)/bitmap.o \
	$(OBJDIR)/global.o

DEPENDENCIES = $(COBJS:.o=.d)

OBJS = $(OBJDIR)/init.o $(COBJS)

all: minix.xfs

minix.xfs: $(DEPENDENCIES) $(OBJS)
	$(CC) -mshort -nostdlib -G -o $@ $(OBJS) $(LIBS)
	xstrip -l syms.mfs $@

clean:
	rm -f $(COBJS)

distclean:
	rm -f $(COBJS)
	rm -f $(DEPENDENCIES)
	rm -f *~

boot: minix.xfs
	$(CP) minix.xfs $(FSDIR)


-include $(DEPENDENCIES)
