blob: 9e785dc5637cf321944745c02aaf7384dbae6b98 [file] [log] [blame] [raw]
NAME=demo
CC=@gcc
CPP=@g++
DB=@lldb
LIBS=-pthread -lssl -lcrypto
INCLUDE=/usr/local/include
OUT_ROOT=./tmp
SRC_ROOT=.
SRC_SUBFOLDERS=src src/http
#auto computed values
BIN=$(OUT_ROOT)/$(NAME)
SRCDIR= $(SRC_ROOT) $(foreach dir, $(SRC_SUBFOLDERS), $(addsuffix /,$(basename $(SRC_ROOT)))$(dir))
SRC = $(foreach dir, $(SRCDIR), $(wildcard $(addsuffix /, $(basename $(dir)))*.c*))
BUILDTREE=$(foreach dir, $(SRCDIR), $(addsuffix /, $(basename $(OUT_ROOT)))$(basename $(dir)))
OBJS= $(foreach source, $(SRC), $(addprefix $(OUT_ROOT)/, $(addsuffix .o, $(basename $(source)))))
CCL = $(CC)
# the C flags
CFLAGS=-Wall -g -O3 -std=c11 $(foreach dir,$(INCLUDE),$(addprefix -I, $(dir))) $(foreach dir,$(SRCDIR),$(addprefix -I, $(dir)))
CPPFLAGS= -Wall -O3 -std=c++11 $(foreach dir,$(INCLUDE),$(addprefix -I, $(dir))) $(foreach dir,$(SRCDIR),$(addprefix -I, $(dir)))
$(NAME): build
build: $(OBJS)
$(CCL) -o $(BIN) $^ -O3 $(LIBS)
$(OUT_ROOT)/%.o: %.c # $(SRC)/%.h
$(CC) -o $@ -c $^ $(CFLAGS)
$(OUT_ROOT)/%.o: %.cpp # $(SRC)/%.h
$(CPP) -o $@ -c $^ $(CPPFLAGS)
$(eval CCL = $(CPP))
clean:
-@rm -R $(OUT_ROOT)
-@mkdir -p $(BUILDTREE)
execute:
@$(BIN)
run: clean build execute
db: clean build
$(DB) $(BIN)