Skip to content
Snippets Groups Projects
Makefile 1.97 KiB
Newer Older
#BUILD = win32
ifeq ($(BUILD), lm32)
TARGET	= lm32-elf-
endif
ifeq ($(BUILD), win32)
TARGET  = i586-mingw32msvc-
LIBS	= -lwsock32 -lws2_32
endif

ifeq ($(BUILD), lm32)
GOALS     =
CPLUSPLUS =
TRANSPORT = transport/lm32.c
else
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
GOALS     = demo/eb-read demo/eb-write demo/eb-load demo/eb-snoop test/sizes test/loopback
CPLUSPLUS = glue/cplusplus.cpp
TRANSPORT = transport/posix-ip.c		\
	    transport/posix-udp.c		\
	    transport/posix-tcp.c		\
	    transport/ssh.c			\
	    transport/transports.c		\
	    transport/block.c
endif

ifeq ($(BUILD), win32)
LIBRARY = etherbone.dll
else
LIBRARY = etherbone.a
endif

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		\
	  $(CPLUSPLUS)			\
	  $(TRANSPORT)
all:	$(GOALS) $(LIBRARY)
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)

demo/%:	demo/%.c $(LIBRARY)
Wesley W. Terpstra's avatar
Wesley W. Terpstra committed
	$(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 $^