|
|
|
|
|
|
|
|
|
|
|
INCLUDES = -I../../../../include -I../../../../../../include -I../../include/profilerhost_util -I../../include/c_util |
|
|
|
|
|
ifndef OS |
|
|
OS := $(shell uname) |
|
|
HOST_ARCH := $(shell uname -m) |
|
|
endif |
|
|
|
|
|
TARGET_ARCH ?= $(HOST_ARCH) |
|
|
TARGET_OS ?= linux |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifeq ($(OS), Windows_NT) |
|
|
LIB_PATH ?= ..\..\lib64 |
|
|
else |
|
|
ifneq ($(TARGET_ARCH), $(HOST_ARCH)) |
|
|
LIB_PATH ?= ../../../../../../targets/$(TARGET_ARCH)-$(TARGET_OS)/lib |
|
|
TARGET_CUDALIB_STUB_PATH = -L $(LIB_PATH)/stubs |
|
|
else |
|
|
EXTRAS_LIB_PATH := ../../../../lib64 |
|
|
LIB_PATH ?= ../../../../../../lib64 |
|
|
endif |
|
|
endif |
|
|
|
|
|
ifeq ($(OS), Windows_NT) |
|
|
export PATH := $(PATH):../../../../lib/x64 |
|
|
LIBS = -lcuda -L $(LIB_PATH) -lnvperf_host -lnvperf_target |
|
|
OBJ = obj |
|
|
LIBEXT = lib |
|
|
LIBPREFIX = |
|
|
else |
|
|
NVCC_FLAGS = --std=c++11 |
|
|
ifeq ($(OS), Linux) |
|
|
NVCC_FLAGS += -Xcompiler -fPIC |
|
|
endif |
|
|
ifeq ($(OS), Darwin) |
|
|
export DYLD_LIBRARY_PATH := $(DYLD_LIBRARY_PATH):../../lib/x64 |
|
|
LIBS = -Xlinker -framework -Xlinker cuda -L ../../../../lib/x64 -lnvperf_host -lnvperf_target |
|
|
else |
|
|
LIBS := |
|
|
ifeq ($(HOST_ARCH), $(TARGET_ARCH)) |
|
|
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):../../lib/x64 |
|
|
ifneq ($(TARGET_ARCH), x86_64) |
|
|
EXTRAS_LIB_PATH := ../../../../lib64 |
|
|
LIBS = -L $(EXTRAS_LIB_PATH) |
|
|
endif |
|
|
endif |
|
|
LIBS += $(TARGET_CUDALIB_STUB_PATH) -lcuda -L $(LIB_PATH) -lnvperf_host -lnvperf_target |
|
|
endif |
|
|
OBJ = o |
|
|
LIBEXT = a |
|
|
LIBPREFIX = lib |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
ifneq ($(TARGET_ARCH), $(HOST_ARCH)) |
|
|
ifeq ($(TARGET_ARCH), aarch64) |
|
|
ifeq ($(TARGET_OS), linux) |
|
|
HOST_COMPILER ?= aarch64-linux-gnu-g++ |
|
|
else ifeq ($(TARGET_OS), qnx) |
|
|
ifeq ($(QNX_HOST),) |
|
|
$(error ERROR - QNX_HOST must be passed to the QNX host toolchain) |
|
|
endif |
|
|
ifeq ($(QNX_TARGET),) |
|
|
$(error ERROR - QNX_TARGET must be passed to the QNX target toolchain) |
|
|
endif |
|
|
HOST_COMPILER ?= $(QNX_HOST)/usr/bin/q++ |
|
|
NVCC_FLAGS += -D_QNX_SOURCE |
|
|
NVCC_FLAGS += --qpp-config 8.3.0,gcc_ntoaarch64le -lsocket |
|
|
endif |
|
|
endif |
|
|
|
|
|
ifdef HOST_COMPILER |
|
|
NVCC_COMPILER = -ccbin $(HOST_COMPILER) |
|
|
endif |
|
|
endif |
|
|
|
|
|
$(LIBPREFIX)profilerHostUtil.$(LIBEXT): List.$(OBJ) Metric.$(OBJ) Eval.$(OBJ) |
|
|
nvcc $(NVCC_COMPILER) -o $@ -lib $^ $(LIBS) |
|
|
|
|
|
List.$(OBJ): List.cpp |
|
|
nvcc $(NVCC_COMPILER) -c $(NVCC_FLAGS) $(INCLUDES) $< |
|
|
|
|
|
Metric.$(OBJ): Metric.cpp |
|
|
nvcc $(NVCC_COMPILER) -c $(NVCC_FLAGS) $(INCLUDES) $< |
|
|
|
|
|
Eval.$(OBJ): Eval.cpp |
|
|
nvcc $(NVCC_COMPILER) -c $(NVCC_FLAGS) $(INCLUDES) $< |
|
|
|
|
|
clean: |
|
|
ifeq ($(OS),Windows_NT) |
|
|
del $(LIBPREFIX)profilerHostUtil.$(LIBEXT) List.$(OBJ) Metric.$(OBJ) Eval.$(OBJ) |
|
|
else |
|
|
rm -f $(LIBPREFIX)profilerHostUtil.$(LIBEXT) List.$(OBJ) Metric.$(OBJ) Eval.$(OBJ) |
|
|
endif |
|
|
|