86 lines
2.2 KiB
Makefile
86 lines
2.2 KiB
Makefile
|
|
ifeq ($(OS),Windows_NT)
|
|
OSTAG = WIN
|
|
EXT = .exe
|
|
CMAKE_GENERATOR = "MinGW Makefiles"
|
|
else
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Linux)
|
|
OSTAG = LIN
|
|
EXT =
|
|
CMAKE_GENERATOR = "Unix Makefiles"
|
|
else ifeq ($(UNAME_S),Darwin)
|
|
$(error OSX isn't supported)
|
|
OSNAME = osx
|
|
endif
|
|
endif
|
|
|
|
AR = ar$(EXT)
|
|
CC = gcc$(EXT)
|
|
CXX = g++$(EXT)
|
|
|
|
SRCDIR = src
|
|
OBJDIR = obj
|
|
OUTDIR = out
|
|
|
|
CFILES = $(wildcard $(SRCDIR)/*.c)
|
|
HFILES = $(wildcard $(SRCDIR)/*.h)
|
|
OFILES = $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(CFILES))
|
|
|
|
CFLAGS_WIN =
|
|
CFLAGS_LIN = -pthread
|
|
CFLAGS = -Wall -Wextra -g $(CFLAGS_$(OSTAG)) -DMICROTCP_DEBUG -DTCP_DEBUG
|
|
|
|
LIBFILE = $(OUTDIR)/libmicrotcp.a
|
|
|
|
TAP_AFILES = $(OUTDIR)/libtuntap.a
|
|
TAP_HFILES = $(OUTDIR)/tuntap.h $(OUTDIR)/tuntap-export.h
|
|
|
|
EXAMPLE_0 = $(OUTDIR)/http$(EXT)
|
|
EXAMPLE_1 = $(OUTDIR)/echo$(EXT)
|
|
|
|
EXAMPLE_CFILES_0 = $(wildcard examples/http/*.c)
|
|
EXAMPLE_HFILES_0 = $(wildcard examples/http/*.h)
|
|
|
|
EXAMPLE_CFILES_1 = examples/echo.c
|
|
EXAMPLE_HFILES_1 =
|
|
|
|
EXAMPLE_LFLAGS_WIN = -lws2_32
|
|
EXAMPLE_LFLAGS_LIN =
|
|
EXAMPLE_LFLAGS = -lmicrotcp -ltuntap $(EXAMPLE_LFLAGS_$(OSTAG))
|
|
|
|
.PHONY: all exm lib clean
|
|
|
|
all: lib exm
|
|
|
|
exm: $(EXAMPLE_0) $(EXAMPLE_1)
|
|
|
|
lib: $(LIBFILE) $(TAP_HFILES) $(TAP_AFILES)
|
|
cp $(SRCDIR)/microtcp.h $(OUTDIR)/microtcp.h
|
|
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(HFILES) $(TAP_HFILES)
|
|
$(CC) -c -o $@ $< $(CFLAGS) -I$(OUTDIR)
|
|
|
|
$(LIBFILE): $(OFILES)
|
|
$(AR) rcs $@ $^
|
|
|
|
$(TAP_AFILES) $(TAP_HFILES):
|
|
cd 3p/libtuntap/ && \
|
|
mkdir -p build && \
|
|
cd build && \
|
|
cmake .. -G $(CMAKE_GENERATOR) -DBUILD_TESTING=OFF -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX) -DCMAKE_BUILD_TYPE=Debug && \
|
|
make
|
|
cp 3p/libtuntap/build/lib/libtuntap.a $(OUTDIR)/libtuntap.a
|
|
cp 3p/libtuntap/tuntap.h $(OUTDIR)/tuntap.h
|
|
cp 3p/libtuntap/build/tuntap-export.h $(OUTDIR)/tuntap-export.h
|
|
|
|
$(EXAMPLE_0): lib $(EXAMPLE_CFILES_0) $(EXAMPLE_HFILES_0)
|
|
$(CC) -o $@ $(EXAMPLE_CFILES_0) $(CFLAGS) $(EXAMPLE_LFLAGS) -I$(OUTDIR) -L$(OUTDIR)
|
|
|
|
$(EXAMPLE_1): lib $(EXAMPLE_CFILES_1) $(EXAMPLE_HFILES_1)
|
|
$(CC) -o $@ $(EXAMPLE_CFILES_1) $(CFLAGS) $(EXAMPLE_LFLAGS) -I$(OUTDIR) -L$(OUTDIR)
|
|
|
|
clean:
|
|
rm -fr $(OBJDIR) $(OUTDIR)
|
|
mkdir obj out
|