BUILD_TYPE = Release
VERBOSE = OFF
SHIM_SOFTLINK = ON
BUILD_TEST = OFF
PLATFORM = NONE
ifeq (${OS}, Windows_NT)
WORK_PATH = ${CURDIR}
CPU_CORES = ${NUMBER_OF_PROCESSORS}
CMAKE_OS_FLAGS = -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
rm_dir = @if exist "${1}" rmdir /s /q "${1}"
else
WORK_PATH = $(dir $(abspath $(lastword ${MAKEFILE_LIST})))
CPU_CORES = $(shell nproc)
CMAKE_OS_FLAGS =
rm_dir = rm -rf ${1}
endif
BUILD_PATH = ${WORK_PATH}/build
INSTALL_PATH = ${WORK_PATH}/output
define uppercase
$(subst z,Z,$(subst y,Y,$(subst x,X,$(subst w,W,$(subst v,V,$(subst u,U,$(subst t,T,$(subst s,S,$(subst r,R,$(subst q,Q,$(subst p,P,$(subst o,O,$(subst n,N,$(subst m,M,$(subst l,L,$(subst k,K,$(subst j,J,$(subst i,I,$(subst h,H,$(subst g,G,$(subst f,F,$(subst e,E,$(subst d,D,$(subst c,C,$(subst b,B,$(subst a,A,$(1)))))))))))))))))))))))))))
endef
.PHONY: build
build: ${BUILD_PATH}/CMakeCache.txt
$(call rm_dir,${INSTALL_PATH})
cmake --build ${BUILD_PATH} --target install -- -j${CPU_CORES}
${BUILD_PATH}/CMakeCache.txt:
${MAKE} configure
.PHONY: configure
configure:
cmake -B${BUILD_PATH} \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_VERBOSE_MAKEFILE=${VERBOSE} \
-DCMAKE_INSTALL_PREFIX=$(abspath $(INSTALL_PATH)) \
-DSHIM_SOFTLINK=${SHIM_SOFTLINK} \
-DBUILD_TEST=${BUILD_TEST} \
${CMAKE_OS_FLAGS} \
$(foreach p,$(PLATFORM),-DPLATFORM_$(call uppercase,${p})=ON)
.PHONY: clean
clean:
$(call rm_dir,${BUILD_PATH})
$(call rm_dir,${INSTALL_PATH})
.PHONY: ascend
ascend:
${MAKE} clean
${MAKE} PLATFORM=ascend
.PHONY: cuda
cuda:
${MAKE} clean
${MAKE} PLATFORM=cuda
.PHONY: cudla
cudla:
${MAKE} clean
${MAKE} PLATFORM=cudla
.PHONY: hip
hip:
${MAKE} clean
${MAKE} PLATFORM=hip
.PHONY: levelzero
levelzero:
${MAKE} clean
${MAKE} PLATFORM=levelzero
.PHONY: opencl
opencl:
${MAKE} clean
${MAKE} PLATFORM=opencl
.PHONY: vpi
vpi:
${MAKE} clean
${MAKE} PLATFORM=vpi
.PHONY: template
template:
${MAKE} clean
${MAKE} PLATFORM=template