CC = kos32-gcc
LD = kos32-ld
KPACK = kpack

DDK_TOPDIR = ../../ddk
DRV_INCLUDES = ../../include

INCLUDES = -I$(DRV_INCLUDES) -I$(DRV_INCLUDES)/asm -I$(DRV_INCLUDES)/uapi

DEFINES = -DKOLIBRI -D__KERNEL__ -DCONFIG_X86_32 -DCONFIG_TINY_RCU \
          -DCONFIG_X86_L1_CACHE_SHIFT=6 -DCONFIG_ARCH_HAS_CACHE_LINE_SIZE \
          -DCONFIG_PRINTK

CFLAGS = -c -std=gnu99 -Os -march=i686 -fno-ident -fomit-frame-pointer \
         -fno-builtin-printf -mno-stack-arg-probe -mpreferred-stack-boundary=2 \
         -mincoming-stack-boundary=2 -mno-ms-bitfields -Wall -Wno-pointer-sign -Wno-cpp

LIBS = -lddk -lcore -lgcc

LDFLAGS = -nostdlib -shared -s --major-os-version 0 --minor-os-version 7 \
          --major-subsystem-version 0 --minor-subsystem-version 5 --subsystem native \
          --image-base 0 --file-alignment 512 --section-alignment 4096

OBJS = main.o hda.o ipc3.o acpi.o i2c.o es8336.o gpio.o

all: sof.sys

sof.sys: $(OBJS) Makefile
	$(LD) -L$(DDK_TOPDIR) -L../../../contrib/sdk/lib $(LDFLAGS) -T ../../examples/c_drv/drv.lds $(OBJS) -o $@ $(LIBS)
	$(KPACK) $@

%.o: %.c sof.h sof_ipc.h Makefile
	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -o $@ $<

clean:
	rm -f $(OBJS) sof.sys
