| |
| |
| |
| 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 |
|
|