BASEDIR=..

include $(BASEDIR)/Makefile-rules

###############################################################################

LOCALFLAGS = -DELKS_VERSION=\"$(ELKS_VERSION)\"

###############################################################################

# clock enabled and has direct I/O port access
# knl, insmod removed as useless
# exitemu disabled because it calls INT directly to DOSEMU
PRGS = \
	kill \
	mount \
	umount \
	passwd \
	shutdown \
	ps \
	meminfo \
	who \
	man \
	chmem \
	beep \
	sercat \
	makeboot \
	decomp \
	sysctl \
	clock \
	mad16cfg \
	# EOL

HOSTPRGS = hostdecomp
HOSTCFLAGS += -I$(TOPDIR)/include
EXODECR_C = $(TOPDIR)/lib/exodecr.c
MBR_AUTOGEN = $(TOPDIR)/bootblocks/mbr_autogen.c

all: $(PRGS)

host: $(HOSTPRGS)

kill: kill.o
	$(LD) $(LDFLAGS) -o kill kill.o $(LDLIBS)

mount: mount.o $(TINYPRINTF)
	$(LD) $(LDFLAGS) -o mount mount.o $(TINYPRINTF) $(LDLIBS)

umount: umount.o
	$(LD) $(LDFLAGS) -o umount umount.o $(LDLIBS)

passwd: passwd.o
	$(LD) $(LDFLAGS) -o passwd passwd.o $(LDLIBS)

shutdown: shutdown.o
	$(LD) $(LDFLAGS) -o shutdown shutdown.o $(LDLIBS)

ps: ps.o $(TINYPRINTF)
	$(LD) $(LDFLAGS) -maout-heap=1024 -maout-stack=2048 -o ps ps.o $(TINYPRINTF) $(LDLIBS)

meminfo: meminfo.o $(TINYPRINTF)
	$(LD) $(LDFLAGS) -maout-heap=1 -maout-stack=512 -o meminfo meminfo.o $(TINYPRINTF) $(LDLIBS)

who: who.o
	$(LD) $(LDFLAGS) -o who who.o $(LDLIBS)

ifeq ($(CONFIG_ARCH_NECV25), y)
clock: clock.o ds3231.o i2c-ll.o 
	$(LD) $(LDFLAGS) -o clock clock.o ds3231.o i2c-ll.o $(LDLIBS)
else
clock: clock.o
	$(LD) $(LDFLAGS) -o clock clock.o $(LDLIBS)
endif

mad16cfg: mad16cfg.o
	$(LD) $(LDFLAGS) -maout-heap=4096 -maout-stack=2048 -o mad16cfg mad16cfg.o $(LDLIBS)

exitemu: exitemu.o
	$(LD) $(LDFLAGS) -o exitemu exitemu.o $(LDLIBS)

knl: knl.o
	$(LD) $(LDFLAGS) -o knl knl.o $(LDLIBS)

man: man.o
	$(LD) $(LDFLAGS) -o man man.o $(LDLIBS)

chmem: chmem.o $(TINYPRINTF)
	$(LD) $(LDFLAGS) -o chmem chmem.o $(TINYPRINTF) $(LDLIBS)

sercat: sercat.o
	$(LD) $(LDFLAGS) -o sercat sercat.o $(LDLIBS)

makeboot.o: $(MBR_AUTOGEN)

$(MBR_AUTOGEN): $(TOPDIR)/bootblocks/mbr.S $(TOPDIR)/bootblocks/Makefile $(TOPDIR)/include/autoconf.h
	$(MAKE) -C $(TOPDIR)/bootblocks mbr_autogen.c

makeboot: makeboot.o $(TINYPRINTF)
	$(LD) $(LDFLAGS) -o makeboot makeboot.o $(TINYPRINTF) $(LDLIBS)

beep: beep.o
	$(LD) $(LDFLAGS) -o beep beep.o $(LDLIBS)

sysctl: sysctl.o
	$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)

decomp: decomp.o $(EXODECR_C) $(TINYPRINTF)
	$(LD) $(LDFLAGS) -maout-heap=0xffff -o $@ $^ $(LDLIBS)

hostdecomp: decomp.c $(EXODECR_C)
	$(HOSTCC) $(HOSTCFLAGS) -o $@ $^

all: $(PRGS)

install: $(PRGS)
	$(INSTALL) $(PRGS) $(DESTDIR)/bin

clean:
	$(RM) *.o $(PRGS) $(HOSTPRGS)
