CONTIKI_CPU_DIRS = . net dev

CONTIKI_SOURCEFILES += mtarch.c rtimer-arch.c elfloader-stub.c watchdog.c eeprom.c

### Compiler definitions
CC       ?= gcc
ifdef LD_OVERRIDE
  LD     = $(LD_OVERRIDE)
else
  LD     = gcc
endif
AS       ?= as
NM       ?= nm
OBJCOPY  ?= objcopy
STRIP    ?= strip
ifdef WERROR
CFLAGSWERROR=-Werror -pedantic -std=c99 -Werror
endif
CFLAGSNO = -Wall -g -I/usr/local/include $(CFLAGSWERROR)
CFLAGS  += $(CFLAGSNO) -O

ifeq ($(HOST_OS),Darwin)
AROPTS = -r
LDFLAGS += -Wl,-flat_namespace
CFLAGS += -DHAVE_SNPRINTF=1 -U__ASSERT_USE_STDERR
else
ifeq ($(HOST_OS),Linux)
LDFLAGS  = -Wl,-Map=contiki-$(TARGET).map,-export-dynamic
endif
endif

### Compilation rules

%.so: $(OBJECTDIR)/%.o
	$(LD) -shared -o $@ $^

ifdef CORE
.PHONY: symbols.c symbols.h
symbols.c symbols.h:
	$(NM) -C $(CORE) | grep -v @ | grep -v dll_crt0 | awk -f $(CONTIKI)/tools/mknmlist > symbols.c
else
symbols.c symbols.h:
	cp ${CONTIKI}/tools/empty-symbols.c symbols.c
	cp ${CONTIKI}/tools/empty-symbols.h symbols.h
endif

contiki-$(TARGET).a: ${addprefix $(OBJECTDIR)/,symbols.o}