forked from gauthier-voron/pin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
89 lines (69 loc) · 2.12 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Copyright 2016 Gauthier Voron <gauthier.voron@lip6.fr>
# This file is part of pin.
#
# Pin is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pin is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with pin. If not, see <http://www.gnu.org/licenses/>.
SRC := src/
TST := t/
INC := include/
OBJ := obj/
LIB := lib/
BIN := bin/
VERSION := 1.0.0
AUTHOR := Gauthier Voron
EMAIL := gauthier.voron@lip6.fr
CC := gcc
CCFLAGS := -Wall -Wextra -O2 -g -DVERSION='"$(VERSION)"' \
-DAUTHOR='"$(AUTHOR)"' -DEMAIL='"$(EMAIL)"'
SOFLAGS := -fPIC -shared
LDFLAGS := -ldl -lpthread
pin-obj := argument error runtime
pin-lib := -ldl -lpthread
scanpin-obj := procfs scanpin
scanpin-lib := -lrt
pthread-lib := -lpthread -lrt
V ?= 1
ifeq ($(V),1)
define print
@echo '$(1)'
endef
endif
ifneq ($(V),2)
Q := @
endif
default: all
all: $(LIB)pin.so $(BIN)scanpin
check: $(LIB)pin.so $(BIN)pthread
$(call print, CHECK $(TST)check.sh)
$(Q)./$(TST)check.sh $(LIB)pin.so $(BIN)
$(LIB)pin.so: $(patsubst %, $(OBJ)%.so, $(pin-obj)) | $(LIB)
$(call print, LD $@)
$(Q)$(CC) $(SOFLAGS) $^ -o $@ $(pin-lib)
$(BIN)scanpin: $(patsubst %, $(OBJ)%.o, $(scanpin-obj)) | $(BIN)
$(call print, LD $@)
$(Q)$(CC) $^ -o $@ $(scanpin-lib)
$(BIN)%: $(TST)%.c | $(BIN)
$(call print, CCLD $@)
$(Q)$(CC) $(CCFLAGS) $< -o $@ $($(patsubst $(BIN)%,%,$@)-lib)
$(OBJ)%.so: $(SRC)%.c | $(OBJ)
$(call print, CC $@)
$(Q)$(CC) -c $(CCFLAGS) -I$(INC) $(SOFLAGS) $< -o $@
$(OBJ)%.o: $(SRC)%.c | $(OBJ)
$(call print, CC $@)
$(Q)$(CC) -c $(CCFLAGS) -I$(INC) $< -o $@
$(OBJ) $(LIB) $(BIN):
$(call print, MKDIR $@)
$(Q)mkdir $@
clean:
$(call print, CLEAN)
$(Q)-rm -rf $(OBJ) $(LIB) $(BIN)