1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#-*-Makefile-*- vim:syntax=make
#$Id: sim-fast.extra,v 1.8 2010-04-08 04:27:24 regehr Exp $
GCC=gcc
GPP=g++
OPTFLAGS = -g -O3
LIBS = -lm -lstdc++
PFLAGS += -tossim -fnesc-nido-tosnodes=1000 -fnesc-simulate -fnesc-nido-motenumber=sim_node\(\) -DTOSSIM_NO_DEBUG
WFLAGS = -Wno-nesc-data-race
PYTHON_VERSION ?= $(shell python --version 2>&1 | sed 's/Python 2\.\([0-9]\)\.[0-9]+\{0,1\}/2.\1/')
BUILDDIR = simbuild/$(PLATFORM)
CFILE = $(BUILDDIR)/sim.c
OBJFILE = $(BUILDDIR)/sim.o
CXXFILE = $(TOSDIR)/lib/tossim/tossim.c
CXXOBJFILE = $(BUILDDIR)/tossim.o
HASHFILE = $(TOSDIR)/lib/tossim/hashtable.c
HASHOBJFILE = $(BUILDDIR)/c-support.o
PYFILE = $(TOSDIR)/lib/tossim/tossim_wrap.cxx
PYOBJFILE = $(BUILDDIR)/pytossim.o
PYDIR =/usr/include/python$(PYTHON_VERSION)
SIMDIR =$(TOSDIR)/lib/tossim
XML = app.xml
DUMPTYPES = -fnesc-dump=components -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs -fnesc-dump=interfacedefs -fnesc-dump=tags
ifeq ($(findstring cygwin, $(OSTYPE)),cygwin)
PLATFORM_FLAGS=-DUSE_DL_IMPORT -fpic
SHARED_OBJECT=_TOSSIM.dll
PLATFORM_BUILD_FLAGS= -fpic -W1,--enabled-auto-image-base
PLATFORM_LIB_FLAGS = -L/usr/lib/python$(PYTHON_VERSION)/config -L/$(PYDIR)/config -lstdc++ -lpython$(PYTHON_VERSION)
else
ifeq ($(OS),Windows_NT) # Some TinyOS installs are like this
PLATFORM_FLAGS=-DUSE_DL_IMPORT -fpic
SHARED_OBJECT=_TOSSIM.dll
PLATFORM_BUILD_FLAGS= -fpic -W1,--enabled-auto-image-base
PLATFORM_LIB_FLAGS = -L/usr/lib/python$(PYTHON_VERSION)/config -L/$(PYDIR)/config -lstdc++ -lpython$(PYTHON_VERSION)
else
ifeq ($(findstring darwin, $(OSTYPE)), darwin)
PLATFORM_FLAGS=-fPIC
PLATFORM_CC_FLAGS=-bundle
SHARED_OBJECT=_TOSSIMmodule.so
PLATFORM_BUILD_FLAGS=-flat_namespace -undefined suppress
PLATFORM_LIB_FLAGS = -lstdc++
else # linux
PLATFORM_FLAGS=-shared -fPIC
SHARED_OBJECT=_TOSSIMmodule.so
PLATFORM_LIB_FLAGS = -lstdc++
PLATFORM_BUILD_FLAGS= -shared -fPIC
endif
endif
endif
BUILD_DEPS = sim-exe
# lib/tossim has to come at the end in order to ensure basic TOSSIM
# implementations are the last resort, so put it directly in the call
sim-exe: builddir $(BUILD_EXTRA_DEPS) FORCE
@echo " placing object files in $(BUILDDIR)"
@echo " writing XML schema to $(XML)"
@echo " compiling $(COMPONENT) to object file sim.o"
$(NCC) -c $(PLATFORM_FLAGS) -o $(OBJFILE) $(OPTFLAGS) $(PFLAGS) $(CFLAGS) $(WFLAGS) $(COMPONENT).nc $(LDFLAGS) $(DUMPTYPES) -fnesc-dumpfile=$(XML)
@echo " compiling Python support and C libraries into pytossim.o, tossim.o, and c-support.o"
$(GPP) -c $(PLATFORM_CC_FLAGS) $(PLATFORM_FLAGS) -o $(PYOBJFILE) $(OPTFLAGS) $(CFLAGS) $(PYFILE) -I$(PYDIR) -I$(SIMDIR) -DHAVE_CONFIG_H
$(GPP) -c $(PLATFORM_CC_FLAGS) $(PLATFORM_FLAGS) -o $(CXXOBJFILE) $(OPTFLAGS) $(CFLAGS) $(CXXFILE) -I$(PYDIR) -I$(SIMDIR)
$(GPP) -c $(PLATFORM_CC_FLAGS) $(PLATFORM_FLAGS) -o $(HASHOBJFILE) $(OPTFLAGS) $(CFLAGS) $(HASHFILE) -I$(PYDIR) -I$(SIMDIR)
@echo " linking into shared object ./$(SHARED_OBJECT)"
$(GPP) $(PLATFORM_BUILD_FLAGS) $(PLATFORM_CC_FLAGS) $(PYOBJFILE) $(OBJFILE) $(CXXOBJFILE) $(HASHOBJFILE) $(PLATFORM_LIB_FLAGS) -o $(SHARED_OBJECT)
@echo " copying Python script interface TOSSIM.py from lib/tossim to local directory"
@cp $(TOSDIR)/lib/tossim/TOSSIM.py .
@echo " "
@echo "*** Successfully built $(PLATFORM) TOSSIM library. "
|