export
unexport NAME
unexport EXE_NAME
unexport DEF_NAME
unexport RING3_OBJS
.PHONY: all programs subdirs clean

TOPDIR  =/prog/hfs/ring3
DDKPATH =/prog/ddk
DDKHEADERS = $(DDKPATH)/base/h
TOOLKITHEADERS = /prog/ibmcpp/include/os2

CC      =gcc
AS	=as
LD	=ld
CC	=gcc
AR	=ar
EMXOMF  =emxomf

EMXOMF_FLAGS = -q

# Project info
NAME    =hfs
EXE_NAME=$(NAME).exe
DEF_NAME=$(NAME).def 

all: programs

# If uncommented, create an .EXE file that doesn't require emx.dll.
# If commented out, create a.out style output which can be debugged by gdb.
OMF = YES

#
# standard CFLAGS
#

# These are for debugging
#CFLAGS = -g -Zmt -DDEBUG -D__OS2__ -DIFS -DI486 -Wall
#LDFLAGS = 

# These are for release. Optimizations (-O or -O2) seem to break something.
CFLAGS = -Zmt -D__OS2__ -DIFS -DI486 -DINCL_32 -Wall
LDFLAGS = -s

# Include path for make dep - must not contain any colons
CINCL_DEP = /prog/emx/include

# The object and library/archive extensions
ifdef OMF
OBJ_EXT = obj
LIB_EXT = lib
else
OBJ_EXT = o
LIB_EXT = a
endif

ifdef OMF
LDFLAGS += -Zsys -Zomf
endif

#
ARCHIVES	=MacFS/MacFS.$(LIB_EXT)
SUBDIRS		=MacFS
ALL_SUB_DIRS	=$(SUBDIRS)

# The ring 3 modules
RING3_MODULES = r3comm logger log diskfunc dir dirsearch cache userfunc
RING3_MODULES += vol file misc names times fsctl error ea attr resource
RING3_MODULES += apifunc icon colour
RING3_OBJS = $(addsuffix .$(OBJ_EXT),$(RING3_MODULES))

programs: $(EXE_NAME) fskill.exe sync.exe prepare.exe

fskill.exe: fskill.c fskill.def
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^

sync.exe: sync.c sync.def
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^

PREPARE_MODULES = prepare names
PREPARE_OBJS = $(addsuffix .$(OBJ_EXT), $(PREPARE_MODULES))
prepare.exe: $(PREPARE_OBJS) prepare.def
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^

$(EXE_NAME): $(RING3_OBJS) subdirs $(ARCHIVES)
	$(CC) -o $(EXE_NAME) $(CFLAGS) $(LDFLAGS) \
	  $(DEF_NAME) \
	  $(RING3_OBJS) \
	  $(ARCHIVES)

subdirs: dummy
	$(MAKE) -C MacFS

clean: dummy
	if exist $(EXE_NAME) del $(EXE_NAME)
	if exist fskill.exe del fskill.exe
	if exist prepare.exe del prepare.exe
	if exist sync.exe del sync.exe
	if exist *.obj del *.obj
	if exist *.o del *.o
	if exist *~ del *~
	if exist core del core
	$(MAKE) -C MacFS clean

include Rules.make
