-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
176 lines (145 loc) · 6.07 KB
/
Makefile
File metadata and controls
176 lines (145 loc) · 6.07 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# Makefile for building all components
# =============================================================================
# Configuration Options (set to 1 to enable, 0 to disable)
# =============================================================================
# Enable verbose logging output
SNOOP_VERBOSE ?= 0
# Enable backtrace collection for debugging
SNOOP_COLLECT_BT ?= 0
# Enable AM (Active Message) handlers collection
SNOOP_COLLECT_AM_HANDLERS ?= 0
# Disable all logging output
SNOOP_NO_LOGS ?= 0
# Enable debug symbols (use -ggdb instead of -O3)
DEBUG_SYMBOLS ?= 0
# =============================================================================
# Build Configuration
# =============================================================================
EXTRA_CFLAGS ?=
EXTRA_CXXFLAGS ?=
SHELL := /bin/bash
UCX_SRC = $(SNOOP_UCX_UCX)/src
UCX_INC = $(UCX_INSTALL)/include
MPI_INC = $(MPI_HOME)/include
CUDA_INC = $(CUDA_PATH)/include
CUDA_SAN = $(CUDA_PATH)/compute-sanitizer
CUDA_SAN_INC = $(CUDA_SAN)/include
CUDA_SAN_LIB = $(CUDA_SAN)
# =============================================================================
# Define Flags Based on Configuration
# =============================================================================
DEFINE_FLAGS =
OPTIMIZATION_FLAGS =
# Set optimization flags based on DEBUG_SYMBOLS
ifeq ($(DEBUG_SYMBOLS),1)
OPTIMIZATION_FLAGS = -ggdb
else
OPTIMIZATION_FLAGS = -O3
endif
ifeq ($(SNOOP_VERBOSE),1)
DEFINE_FLAGS += -DSNOOP_VERBOSE
endif
ifeq ($(SNOOP_COLLECT_BT),1)
DEFINE_FLAGS += -DSNOOP_COLLECT_BT
endif
ifeq ($(SNOOP_COLLECT_AM_HANDLERS),1)
DEFINE_FLAGS += -DSNOOP_COLLECT_AM_HANDLERS
endif
ifeq ($(SNOOP_NO_LOGS),1)
DEFINE_FLAGS += -DSNOOP_NO_LOGS
endif
# Add define flags to compiler flags
EXTRA_CFLAGS += $(DEFINE_FLAGS) $(OPTIMIZATION_FLAGS)
EXTRA_CXXFLAGS += $(DEFINE_FLAGS) $(OPTIMIZATION_FLAGS)
# =============================================================================
# Targets
# =============================================================================
.PHONY: clean all ucp_tracker preload snoop_mpi sanitizer cpp_library completions help config
all: clean completion ucp_tracker preload snoop_mpi sanitizer cpp_library
help:
@echo "==================================================================="
@echo "Snoop Build System - Configuration Options"
@echo "==================================================================="
@echo ""
@echo "Usage: make [target] [OPTION=value]"
@echo ""
@echo "Configuration Options:"
@echo "ucTrace runs with bare minimum settings without setting options"
@echo " SNOOP_VERBOSE=1 Enable verbose logging output (default: 0)"
@echo " SNOOP_COLLECT_BT=1 Enable backtrace collection for debugging (default: 0)"
@echo " SNOOP_COLLECT_AM_HANDLERS=1 Enable AM handlers collection (default: 0)"
@echo " SNOOP_NO_LOGS=1 Disable all logging output (default: 0)"
@echo " DEBUG_SYMBOLS=1 Enable debug symbols (-ggdb) instead of optimization (-O3) (default: 0)"
@echo ""
@echo "Build Targets:"
@echo " all Build all components (default)"
@echo " clean Remove all built files"
@echo " completion Generate completion tracking headers"
@echo " ucp_completion Generate UCP completion tracking headers"
@echo " ucp_tracker Build UCP tracker library"
@echo " go Build Go shared library"
@echo " preload Build preload library"
@echo " snoop_mpi Build MPI snooping library"
@echo " sanitizer Build memory sanitizer library"
@echo " cpp_library Build C++ library"
@echo " config Show current configuration"
@echo " help Show this help message"
@echo ""
@echo "Examples:"
@echo " make # Build with default settings (-O3 optimization)"
@echo " make SNOOP_VERBOSE=1 # Build with verbose logging enabled"
@echo " make SNOOP_COLLECT_BT=1 SNOOP_VERBOSE=1 # Enable backtraces and verbose"
@echo " make DEBUG_SYMBOLS=1 # Build with debug symbols instead of optimization"
@echo " make clean all SNOOP_NO_LOGS=1 # Clean build with no logging"
@echo ""
config:
@echo "==================================================================="
@echo "Current Configuration:"
@echo "==================================================================="
@echo "SNOOP_VERBOSE: $(SNOOP_VERBOSE)"
@echo "SNOOP_COLLECT_BT: $(SNOOP_COLLECT_BT)"
@echo "SNOOP_COLLECT_AM_HANDLERS: $(SNOOP_COLLECT_AM_HANDLERS)"
@echo "SNOOP_NO_LOGS: $(SNOOP_NO_LOGS)"
@echo "DEBUG_SYMBOLS: $(DEBUG_SYMBOLS)"
@echo ""
@echo "Active Define Flags: $(DEFINE_FLAGS)"
@echo "Optimization Flags: $(OPTIMIZATION_FLAGS)"
@echo "Extra CFLAGS: $(EXTRA_CFLAGS)"
@echo "Extra CXXFLAGS: $(EXTRA_CXXFLAGS)"
@echo ""
clean:
rm -f *.so
rm -f go/completion-tracking/*.h
rm -f sanitizer/libmalloctracker.so
rm -f libmalloctracker.so
rm -f snoop_mpi.so
completion:
cd go/completion-tracking && \
rm -f *.h && \
python3 generate_funcs.py
ucp_completion:
cd go/ucp-completion-tracking && \
rm -f *.h && \
python3 generate_recv_funcs.py && \
python3 generate_send_funcs.py
ucp_tracker:
cd ucp_tracker && \
gcc -shared -fPIC -o libsnoop_ucp.so ucp_tracker.c && \
cp *.so ../
go:
cd go && \
CC=gcc CXX=g++ go build -o libsnoop_go.so -buildmode=c-shared && \
cp libsnoop_go.so ../libsnoop_go.so
preload: cpp_library
gcc -shared -fPIC $(EXTRA_CFLAGS) -o preload.so preload/preload.c \
-I$(UCX_SRC) -I$(UCX_INC) -L$(CURDIR) -lsnoop_go
snoop_mpi:
mpicc -shared -fPIC -o snoop_mpi.so mpi/snoop_mpi.c \
-I$(MPI_INC) -I$(UCX_SRC) -I$(UCX_INC) -L$(CURDIR)/.. -L$(CURDIR) -lsnoop_go
sanitizer:
cd sanitizer && \
g++ -I$(CUDA_INC) -I$(CUDA_SAN_INC) -L$(CUDA_SAN_LIB) \
-o libmalloctracker.so malloc_tracker.cpp -fPIC -shared -lsanitizer-public && \
cp libmalloctracker.so ../
cpp_library: completion
g++ $(EXTRA_CXXFLAGS) -fPIC -shared -o libsnoop_go.so ./cpp-rewrite/*.cpp -I./cpp-rewrite -lz