Files
pstrace/framework/Makefile
T
nnosov 8251ba526f all code except of pst_function & pst_handler rewritten on C language.
Logger nad Allocator decided to be a global for all library
2020-02-01 15:19:55 +04:00

89 lines
2.7 KiB
Makefile

#use Bash instead of SH
export SHELL := /bin/bash
# echo command color definitions
ifndef NO_COLOR
RED=\e[0;31m
GREEN=\e[0;32m
YELLOW=\e[1;33m
NC=\e[0m # No Color
COLOR=-fdiagnostics-color
else
RED=
GREEN=
YELLOW=
NC=
COLOR=
endif
CXX = gcc
CC = gcc
RM = rm -f
AR = ar rvs
BUILD_DIR = ./build
RESULT_DIR = ../build
LIB_STATIC = $(RESULT_DIR)/libframework.a
#Software LABEL, BUILD number, and DATE of build
$(shell mkdir -p ${BUILD_DIR})
SOFT_BUILD = $(shell STR=`cat $(BUILD_DIR)/version.h 2> /dev/null | grep 'SOFT_BUILD' | sed 's/[a-z A-Z\#\-\._]//g'`; let "STR += 1"; echo $$STR; echo "SOFT_BUILD $$STR" > $(BUILD_DIR)/version.h;)
DATE_BUILD = $(shell date +"%D %T")
#source and header files search path. add here new directories which contains files specified for $(SRC)
VPATH = . logger storage http/client http/server utils swi rmq interfaces swi/protocols
SRC = $(wildcard $(addsuffix /*.cpp,${VPATH}))
OBJ = $(patsubst %.cpp,%.o,$(addprefix $(BUILD_DIR)/,$(notdir $(SRC))))
INCS = -I"../thirdparty" -I"./" -I"./utils" -I"./rmq" -I"/usr/include/json-c" -I"/usr/include/postgresql" -I /usr/include/libxml2 -I"/opt/swifttest/include" -I"../thirdparty/libswiftclient/src/lib"
FLAGS = -Wall -ggdb -fPIC -O3 -rdynamic -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DSOFT_BUILD=$(SOFT_BUILD) -DUSER_BUILD=$(USER) -DDATE_BUILD="$(DATE_BUILD)"
.PHONY: all clean
all: $(LIB_STATIC)
clean:
${RM} $(BUILD_DIR)/*.o $(BUILD_DIR)/*.dep $(BIN) $(LIB_STATIC) $(BUILD_DIR)/prepare.bld $(RESULT_DIR)/prepare.res $(BUILD_DIR)/version.h
@if [ -z "$$(ls -A $(BUILD_DIR) 2>&1)" ]; then ${RM} -r $(BUILD_DIR); fi
@if [ -z "$$(ls -A $(RESULT_DIR) 2>&1)" ]; then ${RM} -r $(RESULT_DIR); fi
$(BUILD_DIR)/prepare.bld:
@if [ ! -e $(BUILD_DIR) ]; then mkdir -vp $(BUILD_DIR); fi
@touch $@
$(RESULT_DIR)/prepare.res:
@if [ ! -e $(RESULT_DIR) ]; then mkdir -vp $(RESULT_DIR); fi
@touch $@
$(BUILD_DIR)/%.o: %.cpp
#compile source code directly to $BUILD_DIR directory
@printf "Building %-60s" $@
@OUT=$$($(CXX) $(COLOR) -o $@ -c $< $(FLAGS) $(INCS) 2>&1); \
if [ $$? -ne "0" ]; \
then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
else \
if [ -n "$$OUT" ]; \
then echo -e "${YELLOW}[DONE]${NC}"; echo -e "'$$OUT'"; \
else \
echo -e "${GREEN}[DONE]${NC}"; \
fi; \
fi
#create dependencies
@$(CXX) -MM -MT '$@' -c $< > $@.dep $(FLAGS) $(INCS)
#create library
$(LIB_STATIC): $(RESULT_DIR)/prepare.res $(BUILD_DIR)/prepare.bld $(OBJ)
@rm -fv $@
@printf "Create %-60s" $@
@OUT=$$($(AR) $@ $(OBJ) 2>&1); \
if [ $$? -ne "0" ]; \
then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
else \
echo -e "${GREEN}[DONE]${NC}"; \
fi
#include dependencies for track changes in sourcecode and related header files
DEPEND := $(OBJ:.o=.o.dep)
-include $(DEPEND)