pstrace

Форк
0
/
Makefile 
101 строка · 3.0 Кб
1
#use Bash instead of SH
2
export SHELL := /bin/bash
3

4
# echo command color definitions
5
ifndef NO_COLOR
6
RED=\e[0;31m
7
GREEN=\e[0;32m
8
YELLOW=\e[1;33m
9
NC=\e[0m # No Color
10
COLOR=-fdiagnostics-color
11
else
12
RED=
13
GREEN=
14
YELLOW=
15
NC=
16
COLOR=
17
endif
18

19
CXX = gcc
20
CC  = gcc
21
RM 	= rm -f
22
AR	= ar rvs
23

24
BUILD_DIR	= ./build
25
RESULT_DIR	= ../build
26
LIB_STATIC	= $(RESULT_DIR)/libpst.a
27
LIB_SHARED	=  $(RESULT_DIR)/libpst.so
28

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")
33

34
#source and header files search path. add here new directories which contains files specified for $(SRC)
35
VPATH 		= ./ ./dwarf ./arch ./utils
36

37
SRC			= $(wildcard $(addsuffix /*.c,${VPATH}))
38
OBJ			= $(patsubst %.c,%.o,$(addprefix $(BUILD_DIR)/,$(notdir $(SRC))))
39

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)"
42

43
.PHONY: all clean
44

45
all: $(LIB_STATIC) $(LIB_SHARED)
46

47
clean:
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
52

53
$(BUILD_DIR)/prepare.bld:
54
	@if [ ! -e $(BUILD_DIR) ]; then mkdir -vp $(BUILD_DIR); fi
55
	@touch $@
56

57
$(RESULT_DIR)/prepare.res:
58
	@if [ ! -e $(RESULT_DIR) ]; then mkdir -vp $(RESULT_DIR); fi
59
	@touch $@
60

61
$(BUILD_DIR)/%.o: %.c
62
#compile source code directly to $BUILD_DIR directory
63
	@printf "Building %-60s" $@
64
	@OUT=$$($(CXX) $(COLOR) -o $@ -c $< $(FLAGS) $(INCS) 2>&1); \
65
	if [ $$? -ne "0" ]; \
66
	  then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
67
	else \
68
	  if [ -n "$$OUT" ]; \
69
	  	then echo -e "${YELLOW}[DONE]${NC}"; echo -e "'$$OUT'"; \
70
	  else \
71
	    echo -e "${GREEN}[DONE]${NC}"; \
72
	  fi; \
73
	fi
74
#create dependencies
75
	@$(CXX) -MM -MT '$@' -c $< > $@.dep $(FLAGS) $(INCS)
76

77
#create static library
78
$(LIB_STATIC): $(RESULT_DIR)/prepare.res $(BUILD_DIR)/prepare.bld $(OBJ)
79
	@rm -fv $@
80
	@printf "Create   %-60s" $@
81
	@OUT=$$($(AR) $@ $(OBJ) 2>&1); \
82
	if [ $$? -ne "0" ]; \
83
	  then echo -e "${RED}[FAILED]${NC}";  echo -e "$$OUT"; \
84
	else \
85
	  echo -e "${GREEN}[DONE]${NC}"; \
86
	fi
87

88
#create shared library
89
$(LIB_SHARED): $(RESULT_DIR)/prepare.res $(BUILD_DIR)/prepare.bld $(OBJ)
90
	@rm -fv $@
91
	@printf "Create   %-60s" $@
92
	@OUT=$$($(CC) -shared $(OBJ) -o $@ 2>&1); \
93
	if [ $$? -ne "0" ]; \
94
	  then echo -e "${RED}[FAILED]${NC}";  echo -e "$$OUT"; \
95
	else \
96
	  echo -e "${GREEN}[DONE]${NC}"; \
97
	fi
98

99
#include dependencies for track changes in sourcecode and related header files
100
DEPEND := $(OBJ:.o=.o.dep)
101
-include $(DEPEND)
102

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.