Skip to content
Snippets Groups Projects
Makefile 2.74 KiB
Newer Older
#BUILD = win32
ifeq ($(BUILD), lm32)
TARGET	= lm32-elf-
endif
ifeq ($(BUILD), win32)
TARGET  = i586-mingw32msvc-
LIBS	= -lwsock32 -lws2_32
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
LIBRARY = etherbone.dll
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
ifeq ($(BUILD), unix)
FLAGS   = -fPIC
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
LIBS    = -Wl,-rpath,/usr/local/lib
LIBRARY = libetherbone.so
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
endif

ifeq ($(BUILD), lm32)
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
TOOLS     =
TESTS     =
CPLUSPLUS =
TRANSPORT = transport/lm32.c
else
TOOLS     = tools/eb-read tools/eb-write tools/eb-load tools/eb-snoop tools/eb-ls tools/eb-tunnel tools/eb-discover
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
TESTS     = test/sizes test/loopback
CPLUSPLUS = glue/cplusplus.cpp
TRANSPORT = transport/posix-ip.c		\
	    transport/posix-udp.c		\
	    transport/posix-tcp.c		\
	    transport/tunnel.c			\
	    transport/transports.c		\
ARCHIVE = etherbone.a
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
FLAGS	:= $(FLAGS) -Wall -Wmissing-declarations -O2
#FLAGS	:= $(FLAGS) -DEB_USE_DYNAMIC    # deterministic untill table overflow (default)
#FLAGS	:= $(FLAGS) -DEB_USE_STATIC=200 # fully deterministic
#FLAGS	:= $(FLAGS) -DEB_USE_MALLOC     # non-deterministic
#FLAGS	:= $(FLAGS) -DDISABLE_SLAVE
#FLAGS	:= $(FLAGS) -DDISABLE_MASTER

CFLAGS	= $(FLAGS) -Wmissing-prototypes
CXXFLAGS= $(FLAGS)
CC	= $(TARGET)gcc
CXX	= $(TARGET)g++
OBJECTS	= $(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(SOURCES)))
SOURCES	= memory/static.c		\
	  memory/dynamic.c		\
	  memory/array.c		\
	  memory/malloc.c		\
	  format/slave.c		\
	  format/master.c		\
	  glue/widths.c			\
	  glue/operation.c		\
	  glue/cycle.c			\
	  glue/device.c			\
	  glue/socket.c			\
	  glue/handler.c		\
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
	  glue/readwrite.c		\
	  glue/strncasecmp.c		\
	  $(CPLUSPLUS)			\
	  $(TRANSPORT)
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
all:	$(TOOLS) $(TESTS) $(ARCHIVE) $(LIBRARY)

install: all
	cp -a $(LIBRARY)* $(ARCHIVE) /usr/local/lib
	cp -a etherbone.h /usr/local/include
	cp -a $(TOOLS) /usr/local/bin
etherbone.a:	$(OBJECTS)
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
	$(TARGET)ar rcs $@ $^
	$(TARGET)ranlib $@
etherbone.dll:	$(OBJECTS)
	$(TARGET)g++ $(CXXFLAGS) -shared -Wl,--out-implib=libetherbone.dll.a -Wl,--output-def,etherbone.def -o $@ $^ $(LIBS)

libetherbone.so:	libetherbone.so.1
	rm -f $@; ln -s $< $@
libetherbone.so.1:	libetherbone.so.1.0
	rm -f $@; ln -s $< $@
libetherbone.so.1.0:	$(OBJECTS)
	$(TARGET)g++ $(CXXFLAGS) -shared -Wl,-soname,libetherbone.so.1 -o $@ $^ $(LIBS)

tools/%:	tools/%.c tools/common.c $(LIBRARY)
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
tools/eb-tunnel:	tools/eb-tunnel.c $(ARCHIVE)
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)

tools/eb-discover:	tools/eb-discover.c $(ARCHIVE)
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)

Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
test/%:	test/%.c $(LIBRARY)
	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)

test/%:	test/%.cpp $(LIBRARY)
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
	rm -f $(LIBRARY) $(OBJECTS) $(GOALS)

%.o:	%.cpp
	$(CXX) $(CXXFLAGS) -o $@ -c $^