2
export SHELL := /bin/bash
4
# echo command color definitions
10
COLOR=-fdiagnostics-color
26
LIB_STATIC = $(RESULT_DIR)/libpst.a
27
LIB_SHARED = $(RESULT_DIR)/libpst.so
29
#Software LABEL, BUILD number, and DATE of build
30
$(shell mkdir -p ${BUILD_DIR})
31
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;)
32
DATE_BUILD = $(shell date +"%D %T")
34
#source and header files search path. add here new directories which contains files specified for $(SRC)
35
VPATH = ./ ./dwarf ./arch ./utils
37
SRC = $(wildcard $(addsuffix /*.c,${VPATH}))
38
OBJ = $(patsubst %.c,%.o,$(addprefix $(BUILD_DIR)/,$(notdir $(SRC))))
40
INCS = -I"./dwarf" -I"./" -I"./utils" -I"./arch" -I"../include"
41
FLAGS = -Wall -ggdb -fPIC -O3 -rdynamic -D_GNU_SOURCE -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DSOFT_BUILD=$(SOFT_BUILD) -DUSER_BUILD=$(USER) -DDATE_BUILD="$(DATE_BUILD)"
45
all: $(LIB_STATIC) $(LIB_SHARED)
48
${RM} $(BUILD_DIR)/*.o $(BUILD_DIR)/*.dep $(LIB_STATIC) $(BUILD_DIR)/prepare.bld $(RESULT_DIR)/prepare.res $(BUILD_DIR)/version.h \
49
$(LIB_STATIC) $(LIB_SHARED) $(RESULT_DIR)/simple
50
@if [ -z "$$(ls -A $(BUILD_DIR) 2>&1)" ]; then ${RM} -r $(BUILD_DIR); fi
51
@if [ -z "$$(ls -A $(RESULT_DIR) 2>&1)" ]; then ${RM} -r $(RESULT_DIR); fi
53
$(BUILD_DIR)/prepare.bld:
54
@if [ ! -e $(BUILD_DIR) ]; then mkdir -vp $(BUILD_DIR); fi
57
$(RESULT_DIR)/prepare.res:
58
@if [ ! -e $(RESULT_DIR) ]; then mkdir -vp $(RESULT_DIR); fi
62
#compile source code directly to $BUILD_DIR directory
63
@printf "Building %-60s" $@
64
@OUT=$$($(CXX) $(COLOR) -o $@ -c $< $(FLAGS) $(INCS) 2>&1); \
66
then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
69
then echo -e "${YELLOW}[DONE]${NC}"; echo -e "'$$OUT'"; \
71
echo -e "${GREEN}[DONE]${NC}"; \
75
@$(CXX) -MM -MT '$@' -c $< > $@.dep $(FLAGS) $(INCS)
78
$(LIB_STATIC): $(RESULT_DIR)/prepare.res $(BUILD_DIR)/prepare.bld $(OBJ)
80
@printf "Create %-60s" $@
81
@OUT=$$($(AR) $@ $(OBJ) 2>&1); \
83
then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
85
echo -e "${GREEN}[DONE]${NC}"; \
89
$(LIB_SHARED): $(RESULT_DIR)/prepare.res $(BUILD_DIR)/prepare.bld $(OBJ)
91
@printf "Create %-60s" $@
92
@OUT=$$($(CC) -shared $(OBJ) -o $@ 2>&1); \
94
then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
96
echo -e "${GREEN}[DONE]${NC}"; \
99
#include dependencies for track changes in sourcecode and related header files
100
DEPEND := $(OBJ:.o=.o.dep)