osd-contiki/platform/cooja/Makefile.cooja

121 lines
3.1 KiB
Makefile
Raw Normal View History

## The COOJA Simulator - cooja platform makefile
##
## This makefile's main purpose is to compile source files
## generated by the COOJA Simulator and should
## only be called from inside the simulator...
##
## However, it can also be used as a shortcut to startup the
## simulator from a customized user platform.
## See the user platform examples.
###########################################################
ifndef COMPILE_MAIN # << shortcut, startup simulator >>
# The COOJA Simulator jar-file location (default)
ifndef COOJA_JAR
COOJA_JAR=$(CONTIKI)/tools/cooja/dist/cooja.jar
endif
# Java binary (default)
ifndef JAVA
JAVA=java
endif
ifndef WINDIR
ifdef OS
ifneq (,$(findstring Windows,$(OS)))
WINDIR := Windows
endif
endif
endif
ifndef WINDIR
# This settings are for UNIX
SEPARATOR=:
else
# These setting are for MS-DOS/Windows 95/Windows NT
SEPARATOR=;
endif
# Command to start simulator with a source file argument
COMMAND = $(JAVA) -DPATH_CONTIKI=$(CONTIKI) -DQUICKSTART_APP=$@ \
-cp "$(COOJA_JAR)$(SEPARATOR)$(COOJA_JAVA)" se.sics.cooja.GUI $(CLASS_CONFIGS)
# Delete pre-defined project sourcefiles (messes up make execution)
PROJECT_SOURCEFILES = # OBS! Ugly fix
%:
@echo "Starting simulator (using shortcut)"
$(COMMAND)
###########################################################
else # << compile generated source file >>
### Check/create COOJA parameters (output files)
ifndef CONTIKI
$(error CONTIKI not defined!)
endif
ifndef TYPEID
$(error TYPEID not defined!)
endif
OUTPUT_DIR = obj_cooja
LIBFILE = $(OUTPUT_DIR)/$(TYPEID).library
DEPFILE = $(OUTPUT_DIR)/$(TYPEID).a
MAPFILE = $(OUTPUT_DIR)/$(TYPEID).map
MAINFILE = $(OUTPUT_DIR)/$(TYPEID).co
COOJA = $(CONTIKI)/platform/$(TARGET)
CONTIKI_TARGET_DIRS = . dev lib sys
COOJA_DEV = $(patsubst $(COOJA)/dev/%.c,%.c,$(wildcard $(COOJA)/dev/*.c))
COOJA_LIB = $(patsubst $(COOJA)/lib/%.c,%.c,$(wildcard $(COOJA)/lib/*.c))
COOJA_SYS = $(patsubst $(COOJA)/sys/%.c,%.c,$(wildcard $(COOJA)/sys/*.c))
CORE_FILES = random.c sensors.c leds.c serial.c
CONTIKI_TARGET_SOURCEFILES = \
$(COOJA_DEV) $(COOJA_LIB) $(COOJA_SYS) $(CORE_FILES)
CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES)
.SUFFIXES:
### Define the CPU directory
CONTIKI_CPU=$(CONTIKI)/cpu/x86
### Compiler definitions (search contiki core last)
CC = gcc
LD = ld
AS = as
OBJCOPY = objcopy
STRIP = strip
CFLAGSNO = -I. -I$(CONTIKI_CPU) \
$(EXTRA_CC_ARGS) \
-I$(COOJA) \
-I$(CONTIKI)/core \
-DWITH_UIP -DWITH_ASCII \
-Wall -g -I. -I/usr/local/include
CFLAGS = $(CFLAGSNO)
### Setup directory search path for source files
CONTIKI_TARGET_DIRS_CONCAT = ${addprefix $(COOJA)/, \
$(CONTIKI_TARGET_DIRS)}
vpath %.c $(PROJECTDIRS) \
$(CONTIKIDIRS) $(APPDIRS) $(CONTIKI_TARGET_DIRS_CONCAT) \
$(CONTIKI_CPU)
$(LIBFILE): $(MAINFILE) $(PROJECT_OBJECTFILES) $(DEPFILE)
$(LD) -Map=$(MAPFILE) -shared $(LD_ARGS_1) -o $@ $^ $(LD_ARGS_2)
$(DEPFILE): ${addprefix $(OBJECTDIR)/, $(CONTIKI_SOURCEFILES:.c=.o)}
$(AR) rcf $@ $^
endif ## END OF 'COMPILE GENERATED CONTIKI MAIN SOURCE FILE'