PKGDIR     ?= ../..
CONTRIB    ?= ${PKGDIR}/contrib
SRC_DIR    ?= ${PKGDIR}/lib/src

PRIVATE_INCDIR += $(CONTRIB)/drivers/pci $(PKGDIR)/lib/src/arch/l4 \
                  $(CONTRIB)/$(ARCH_DIR)/pci $(CONTRIB)/drivers/base/ \
                  $(CONTRIB)/lib $(PKGDIR_OBJ) $(CONTRIB)/net/core \
		  ${PKGDIR}/include ${PKGDIR}/build/common/kernel

#DDELINUX26DIR is to be set
DDELINUX26DIR ?= ${PKGDIR}
.include <${DDELINUX26DIR}/mk/minix.dde.mk>

LIB = ddelinux26
LIBDIR=${PREFIX}/lib
MKPROFILE=no


# Some parts of the code use gcc style variable argument macro's. 
# This requires the removal of the "-traditional-cpp" compile flag 
# as defined in /usr/pkg/share/mk/sys.mk
# Override sys.mk COMPILE.S to remove traditional-cpp pre-processing.
COMPILE.S=     ${CC} ${AFLAGS} ${CPPFLAGS} -c


VPATH = ${SRC_DIR}:${CONTRIB}

SRCS   =  arch/l4/cli_sti.c     \
          arch/l4/fs.c          \
          arch/l4/hw-helpers.c  \
          arch/l4/init_task.c   \
          arch/l4/init.c        \
		  arch/l4/pci.c         \
          arch/l4/power.c       \
		  arch/l4/process.c     \
		  arch/l4/res.c         \
		  arch/l4/sched.c       \
		  arch/l4/signal.c      \
		  arch/l4/smp.c         \
		  arch/l4/softirq.c     \
		  arch/l4/timer.c       \
          arch/l4/page_alloc.c  \
		  arch/l4/kmem_cache.c  \
		  arch/l4/kmalloc.c     \
		  arch/l4/irq.c         \
		  arch/l4/param.c       \
		  arch/l4/vmalloc.c     \
		  arch/l4/vmstat.c      \
		  arch/x86/lib/semaphore_32.S   \
		  arch/x86/kernel/pci-dma.c   \
		  arch/x86/kernel/pci-nommu.c   \
		  arch/l4/mm-helper.c   \
		  kernel/exit.c \
          kernel/kthread.c \
          kernel/mutex.c \
		  kernel/notifier.c \
          kernel/resource.c \
          kernel/rwsem.c \
          kernel/sched.c \
		  kernel/semaphore.c \
          kernel/sys.c \
	  security/commoncap.c \
		  kernel/time.c \
		  kernel/timer.c \
          kernel/wait.c \
          kernel/workqueue.c \
          lib/bitmap.c \
		  lib/bitrev.c \
          lib/crc32.c \
          lib/ctype.c \
          lib/cpumask.c \
		  lib/find_next_bit.c \
	      lib/hexdump.c \
		  lib/idr.c \
          lib/iomap.c \
		  lib/hweight.c \
		  lib/kasprintf.c \
		  lib/kernel_lock.c \
          lib/klist.c \
          lib/kobject.c \
          lib/kref.c \
		  lib/parser.c \
		  lib/proportions.c \
		  lib/radix-tree.c \
		  lib/rwsem.c \
		  lib/scatterlist.c \
		  lib/sha1.c \
          lib/string.c \
          lib/string_helpers.c \
          lib/vsprintf.c \
		  mm/dmapool.c \
		  mm/mempool.c \
          mm/util.c \
          drivers/base/attribute_container.c \
          drivers/base/bus.c \
          drivers/base/class.c \
          drivers/base/core.c \
          drivers/base/cpu.c \
          drivers/base/dd.c \
	      drivers/base/devres.c \
          drivers/base/driver.c \
          drivers/base/init.c \
		  drivers/base/map.c \
		  drivers/base/platform.c \
          drivers/base/sys.c \
          drivers/pci/access.c \
          drivers/pci/bus.c \
		  drivers/pci/hotplug-pci.c \
          drivers/pci/pci.c \
          drivers/pci/pci-driver.c \
          drivers/pci/probe.c \
          drivers/pci/search.c \
          drivers/pci/setup-bus.c \
          drivers/pci/setup-res.c

lib/crc32.o :
	${COMPILE.c} -Ilib ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}

kernel/time.d : kernel/timeconst.h
	${MKDEP}  -f ${.TARGET} -- ${MKDEPFLAGS}  -Ikernel \
	    ${CFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
	    ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}

kernel/time.o : kernel/timeconst.h
	${COMPILE.c} -Ikernel ${COPTS.${.IMPSRC:T}} ${CPUFLAGS.${.IMPSRC:T}} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC} -o ${.TARGET}

kernel/timeconst.h : ${DDELINUX26DIR}/lib/src/kernel/timeconst.pl
	echo "genrating timeconst.h"
	$(VERBOSE)perl $(DDELINUX26DIR)/lib/src/kernel/timeconst.pl 250 >$@

lib/crc32.d : lib/crc32table.h
	${MKDEP}  -f ${.TARGET} -- ${MKDEPFLAGS}  -Ilib \
	    ${CFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
	    ${CPPFLAGS} ${CPPFLAGS.${.IMPSRC:T}} ${.IMPSRC}

lib/crc32table.h : gen_crc32table
	$(VERBOSE) ./gen_crc32table > $@

gen_crc32table : lib/gen_crc32table.c
	$(VERBOSE) $(CC) -O2 -o $@ $<

clean:
	rm -f kernel/timeconst.h lib/crc32table.h gen_crc32table

distclean:
	rm -rf arch crc32table.h drivers kernel lib mm kernel/timeconst.h \
	       lib/crc32table.h gen_crc32table

.include <bsd.lib.mk>
_MKTARGET_CREATE := ${_MKTARGET_CREATE}; mkdir -p ${.TARGET:H};

