pstrace

Форк
0
/
Makefile 
115 строк · 3.3 Кб
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

27
BIN  			= $(RESULT_DIR)/trace
28

29
# Generate module software version and build version
30
#$(shell \
31
#	STR=`cat $(BUILD_DIR)/version.h 2> /dev/null | grep "SOFT_BUILD" | sed 's/[a-z A-Z#\-\._]//g'`; \
32
#	let "STR += 1";\
33
#	echo "#ifndef VERSION_H_" > $(BUILD_DIR)/version.h; \
34
#	echo "#define VERSION_H_" >> $(BUILD_DIR)/version.h; \
35
#	echo "/* Automatically generated file, DO NOT EDIT it !!! */" >> $(BUILD_DIR)/version.h; \
36
#	echo "" >> $(BUILD_DIR)/version.h; \
37
#	echo "#define SOFT_BUILD $$STR" >> $(BUILD_DIR)/version.h; \
38
#	echo "#define USER_BUILD \"$${USER}\"" >> $(BUILD_DIR)/version.h; \
39
#	echo "#define DATE_BUILD \"`date +"%D %T"`\"" >> $(BUILD_DIR)/version.h; \
40
#	echo "#define REV_BUILD  \"`git rev-parse --short HEAD`\"" >> $(BUILD_DIR)/version.h; \
41
#	echo "" >> $(BUILD_DIR)/version.h; \
42
#	echo "#endif /* VERSION_H_ */" >> $(BUILD_DIR)/version.h \
43
#	)
44

45
#source file search path. add here new directories which contains files specified for $(SRC)
46
VPATH = ./tests
47

48
SRC 		= $(shell find . -name '*.c')
49
#OBJ 		= $(patsubst %.cpp,%.o,$(addprefix $(BUILD_DIR)/,$(notdir $(SRC))))
50
OBJ 		= $(BUILD_DIR)/main.o
51

52
LIBS 		= -L./ -lpthread -ldl -ldw -lunwind -lunwind-x86_64 -liberty
53
LIB_STATIC	= $(RESULT_DIR)/libpst.a
54
LIB_DYNAMIC	= $(RESULT_DIR)/libpst.so
55

56
INCS		= -I./include -I./src
57
FLAGS		= -Wall -ggdb -fPIC -O3 -rdynamic -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
58

59

60
.PHONY: all clean $(BIN)
61

62
all: $(BIN)
63

64
$(LIB_STATIC):
65
	@make -C ./src
66

67
clean:
68
	${RM} $(BUILD_DIR)/*.o $(BUILD_DIR)/*.dep $(BIN) $(BUILD_DIR)/prepare.bld $(RESULT_DIR)/prepare.res $(BUILD_DIR)/version.h \
69
	    $(LIB_STATIC) $(LIB_DYNAMIC)
70
	@make clean -C ./src
71
	@if [ -z "$$(ls -A $(BUILD_DIR) 2>&1)" ]; then ${RM} -r $(BUILD_DIR); fi
72
	@if [ -z "$$(ls -A $(RESULT_DIR) 2>&1)" ]; then ${RM} -r $(RESULT_DIR); fi
73

74
$(BUILD_DIR)/prepare.bld:
75
	@if [ ! -e $(BUILD_DIR) ]; then mkdir -vp $(BUILD_DIR); fi
76
	@touch $@
77
	
78
$(RESULT_DIR)/prepare.res:
79
	@if [ ! -e $(RESULT_DIR) ]; then mkdir -vp $(RESULT_DIR); fi
80
	@touch $@
81

82
$(BIN): $(BUILD_DIR)/prepare.bld $(RESULT_DIR)/prepare.res $(OBJ) $(LIB_STATIC)
83
	gcc -ggdb -O3 -o $(BUILD_DIR)/simple ./tests/simple.c
84
	@make -C ./src
85
	@printf "Create   %-60s" $@
86
	@OUT=$$($(CXX) $(COLOR) -o $@ $(OBJ) $(LIB_STATIC) $(LIBS) 2>&1); \
87
	if [ $$? -ne "0" ]; \
88
	  then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
89
	else \
90
	  if [ -n "$$OUT" ]; \
91
	  	then echo -e "${YELLOW}[DONE]${NC}"; echo -e "'$$OUT'"; \
92
	  else \
93
	    echo -e "${GREEN}[DONE]${NC}"; \
94
	  fi; \
95
	fi
96

97
$(BUILD_DIR)/%.o: %.c
98
#compile source code directly to $BUILD_DIR directory
99
	@printf "Building %-60s" $@
100
	@OUT=$$($(CXX) $(COLOR) -o $@ -c $< $(FLAGS) $(INCS) 2>&1); \
101
	if [ $$? -ne "0" ]; \
102
	  then echo -e "${RED}[FAILED]${NC}"; echo -e "$$OUT"; \
103
	else \
104
	  if [ -n "$$OUT" ]; \
105
	  	then echo -e "${YELLOW}[DONE]${NC}"; echo -e "'$$OUT'"; \
106
	  else \
107
	    echo -e "${GREEN}[DONE]${NC}"; \
108
	  fi; \
109
	fi
110
#create dependencies
111
	@$(CXX) -MM -MT '$@' -c $< > $@.dep $(FLAGS) $(INCS)
112

113
#include dependencies for track changes in source code and related header files
114
DEPEND := $(OBJ:.o=.o.dep)
115
-include $(DEPEND)
116

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

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

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

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