63 lines
1.6 KiB
Makefile
63 lines
1.6 KiB
Makefile
#
|
|
# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved.
|
|
#
|
|
# See LICENSE.txt for license information
|
|
#
|
|
|
|
# Variables
|
|
NCCL_HOME := ../../build
|
|
INC := -I$(NCCL_HOME)/include -I$(CUDA_HOME)/include -Inccl
|
|
PLUGIN_SO := libnccl-profiler-inspector.so
|
|
VERSION_FILE := version.cc
|
|
|
|
# Compiler and flags
|
|
CXX := g++
|
|
CXXFLAGS := -g -O3 -fPIC -shared -march=native -DNDEBUG -Wall -Wextra
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CXXFLAGS += -g2 -ggdb3 -rdynamic -funwind-tables -fno-omit-frame-pointer
|
|
endif
|
|
|
|
ifeq ($(ASAN), 1)
|
|
CXXFLAGS += -fsanitize=address
|
|
LDFLAGS += -fsanitize=address -static-libasan
|
|
NVLDFLAGS += -Xcompiler -fsanitize=address,-static-libasan
|
|
endif
|
|
|
|
ifeq ($(UBSAN), 1)
|
|
CXXFLAGS += -fsanitize=undefined
|
|
LDFLAGS += -fsanitize=undefined -static-libubsan
|
|
NVLDFLAGS += -Xcompiler -fsanitize=undefined,-static-libubsan
|
|
endif
|
|
|
|
# Source files
|
|
SOURCES := inspector_plugin.cc inspector.cc json.cc
|
|
|
|
# Default target
|
|
all: $(PLUGIN_SO)
|
|
|
|
# Rule to build the plugin
|
|
$(PLUGIN_SO): $(VERSION_FILE) $(SOURCES)
|
|
@echo "Compiling to create $@ from $^"
|
|
$(CXX) $(INC) $(CXXFLAGS) -o $@ -Wl,-soname,$(PLUGIN_SO) $^
|
|
|
|
# Rule to generate version.cc
|
|
$(VERSION_FILE):
|
|
@GIT_INFO=$$(./utils/extract_git_version.sh); \
|
|
echo '#include "version.h"' > $(VERSION_FILE).tmp; \
|
|
echo 'const char* get_git_version_info() { return "'$$GIT_INFO'"; }' >> $(VERSION_FILE).tmp; \
|
|
if ! cmp $(VERSION_FILE).tmp $(VERSION_FILE); then \
|
|
echo "updating ${VERSION_FILE} file -> $$GIT_INFO"; \
|
|
mv $(VERSION_FILE).tmp $(VERSION_FILE); \
|
|
else \
|
|
echo "${VERSION_FILE} up to date -> $$GIT_INFO"; \
|
|
rm $(VERSION_FILE).tmp; \
|
|
fi
|
|
|
|
# Clean target
|
|
clean:
|
|
rm -f $(VERSION_FILE) $(PLUGIN_SO)
|
|
|
|
# Phony targets
|
|
.PHONY: all clean
|