ifndef (BASEDIR)
BASEDIR:=../../..
endif

include $(BASEDIR)/config/Makevars.mk
include $(BASEDIR)/config/Makecommon.mk

ifneq ($(TARGET),host)
all:
	$(info ->   Nothing to do in host/: Host code can only be built when TARGET=host)
else 

# We have some private .h files right here..
CPPFLAGS+=$(CORE_EXTRA_CPPFLAGS) -I.
CFLAGS+=$(CORE_EXTRA_CFLAGS) -I.
LDFLAGS+=$(CORE_EXTRA_LDFLAGS) 

SRCFILES:=$(wildcard *.c *.cpp)
SRCFILES:=$(subst sfbmon.cpp,,$(SRCFILES))   # extract the programs to handle separately
SRCFILES:=$(subst sfbprog.cpp,,$(SRCFILES))   # extract the programs to handle separately
SRCFILES:=$(subst sfbdl.cpp,,$(SRCFILES))   # extract the programs to handle separately
OBJFILES:=$(SRCFILES)
OBJFILES:=$(patsubst %.c, $(OBJDIR)/%.o, $(OBJFILES))
OBJFILES:=$(patsubst %.cpp, $(OBJDIR)/%.o, $(OBJFILES))

ifeq ($(OS),POSIX)
# Sun Aug  2 09:33:16 2009 ACKLEY: Temporarily let sfbmon and sfbprog rot :(..  WAS:TARGETS:=$(LIBDIR)/libhw.a $(BINDIR)/sfbdl $(BINDIR)/sfbmon $(BINDIR)/sfbprog $(BINDIR)/B36
TARGETS:=$(LIBDIR)/libhw.a $(BINDIR)/sfbdl $(BINDIR)/sfbprog $(BINDIR)/B36
else
ifeq ($(OS),WIN32)
TARGETS:=$(LIBDIR)/libhw.a $(BINDIR)/sfbdl $(BINDIR)/B36
else
$(error Error: Unknown OS='$(OS)')
endif # (WIN32)
endif # (POSIX)

# Let the programmer code see the OS
CPPFLAGS+=-DOS=$(OS)
CFLAGS+=-DOS=$(OS)

PROGDEPS:=$(LIBDIR)/libhw.a $(LIBDIR)/libreflex.a Makefile

all:	$(TARGETS)

$(LIBDIR)/libhw.a:	$(OBJFILES) # $(info SRCFILES='$(SRCFILES) OBJFILES='$(OBJFILES)' OBJDIR='$(OBJDIR)')
	ar ruc "$@" $(OBJFILES)

$(BINDIR)/sfbmon: $(OBJDIR)/sfbmon.o $(PROGDEPS) $(BINDIR)
	$(GPP) $(LDFLAGS) -o "$@" "$<" -lreflex -lhw -lreflex

$(OBJDIR)/sfbmon.o:	sfbmon.cpp
	$(GPP) $(OPTS) $(DEBUGS) $(CFLAGS) $(DEFINES) -c -o"$@" "$<"

$(BINDIR)/sfbdl: $(OBJDIR)/sfbdl.o $(PROGDEPS) $(BINDIR)
	$(GPP) $(LDFLAGS) -o "$@" "$<" -lreflex -lhw -lreflex

$(OBJDIR)/sfbdl.o:	sfbdl.cpp
	$(GPP) $(OPTS) $(DEBUGS) $(CFLAGS) $(DEFINES) -c -o"$@" "$<"

$(BINDIR)/sfbprog: $(OBJDIR)/sfbprog.o  $(PROGDEPS) $(BINDIR)
	$(GPP) $(LDFLAGS) -o "$@" "$<" -lreflex -lhw -lreflex

$(OBJDIR)/sfbprog.o:	sfbprog.cpp
	$(GPP) $(OPTS) $(DEBUGS) $(CFLAGS) $(DEFINES) -c -o"$@" "$<"

$(OBJDIR)/fileio.o:	fileio.c
	$(GPP) $(OPTS) $(DEBUGS) $(CFLAGS) $(DEFINES) -c -o"$@" "$<"

$(BINDIR)/B36: B36.c $(BINDIR)
	$(GCC) -o "$@" "$<"

$(BINDIR):	
	mkdir -p $(BINDIR)

endif # ifneq ($(TARGET),host)

clean:
	@rm -f *~ $(OBJDIR)/*.o 

realclean:	clean
	@rm -f $(OBJDIR)/*.d $(TARGETS)

.PHONY:	all clean realclean

include $(BASEDIR)/config/Makedeps.mk
