# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. ROOTDIR = $(CURDIR) .PHONY: clean all test doc pylint cpplint lint\ cython cython2 cython3 web runtime vta ifndef DMLC_CORE_PATH DMLC_CORE_PATH = $(ROOTDIR)/3rdparty/dmlc-core endif ifndef DLPACK_PATH DLPACK_PATH = $(ROOTDIR)/3rdparty/dlpack endif INCLUDE_FLAGS = -Iinclude -I$(DLPACK_PATH)/include -I$(DMLC_CORE_PATH)/include PKG_CFLAGS = -std=c++11 -Wall -O2 $(INCLUDE_FLAGS) -fPIC PKG_LDFLAGS = all: @mkdir -p build && cd build && cmake .. && $(MAKE) runtime: @mkdir -p build && cd build && cmake .. && $(MAKE) runtime vta: @mkdir -p build && cd build && cmake .. && $(MAKE) vta cpptest: @mkdir -p build && cd build && cmake .. && $(MAKE) cpptest # EMCC; Web related scripts EMCC_FLAGS= -std=c++11 -DDMLC_LOG_STACK_TRACE=0\ -Oz -s RESERVED_FUNCTION_POINTERS=2 -s MAIN_MODULE=1 -s NO_EXIT_RUNTIME=1\ -s TOTAL_MEMORY=1073741824\ -s EXTRA_EXPORTED_RUNTIME_METHODS="['addFunction','cwrap','getValue','setValue']"\ -s USE_GLFW=3 -s USE_WEBGL2=1 -lglfw\ $(INCLUDE_FLAGS) web: build/libtvm_web_runtime.js build/libtvm_web_runtime.bc build/libtvm_web_runtime.bc: web/web_runtime.cc @mkdir -p build/web @mkdir -p $(@D) emcc $(EMCC_FLAGS) -MM -MT build/libtvm_web_runtime.bc $< >build/web/web_runtime.d emcc $(EMCC_FLAGS) -o $@ web/web_runtime.cc build/libtvm_web_runtime.js: build/libtvm_web_runtime.bc @mkdir -p $(@D) emcc $(EMCC_FLAGS) -o $@ build/libtvm_web_runtime.bc # Lint scripts cpplint: python3 3rdparty/dmlc-core/scripts/lint.py vta cpp vta/include vta/src python3 3rdparty/dmlc-core/scripts/lint.py topi cpp topi/include; python3 3rdparty/dmlc-core/scripts/lint.py nnvm cpp nnvm/include nnvm/src; python3 3rdparty/dmlc-core/scripts/lint.py tvm cpp include src verilog\ examples/extension/src examples/graph_executor/src pylint: python3 -m pylint python/tvm --rcfile=$(ROOTDIR)/tests/lint/pylintrc python3 -m pylint topi/python/topi --rcfile=$(ROOTDIR)/tests/lint/pylintrc python3 -m pylint nnvm/python/nnvm --rcfile=$(ROOTDIR)/tests/lint/pylintrc python3 -m pylint vta/python/vta --rcfile=$(ROOTDIR)/tests/lint/pylintrc jnilint: python3 3rdparty/dmlc-core/scripts/lint.py tvm4j-jni cpp jvm/native/src lint: cpplint pylint jnilint doc: doxygen docs/Doxyfile javadoc: # build artifact is in jvm/core/target/site/apidocs cd jvm && mvn javadoc:javadoc # Cython build cython: cd python; python setup.py build_ext --inplace cython2: cd python; python2 setup.py build_ext --inplace cython3: cd python; python3 setup.py build_ext --inplace cyclean: rm -rf python/tvm/*/*/*.so python/tvm/*/*/*.dylib python/tvm/*/*/*.cpp # JVM build rules ifeq ($(OS),Windows_NT) JVM_PKG_PROFILE := windows SHARED_LIBRARY_SUFFIX := dll else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S), Darwin) JVM_PKG_PROFILE := osx-x86_64 SHARED_LIBRARY_SUFFIX := dylib else JVM_PKG_PROFILE := linux-x86_64 SHARED_LIBRARY_SUFFIX := so endif endif JVM_TEST_ARGS := $(if $(JVM_TEST_ARGS),$(JVM_TEST_ARGS),-DskipTests -Dcheckstyle.skip=true) jvmpkg: (cd $(ROOTDIR)/jvm; \ mvn clean package -P$(JVM_PKG_PROFILE) -Dcxx="$(CXX)" \ -Dcflags="$(PKG_CFLAGS)" -Dldflags="$(PKG_LDFLAGS)" \ -Dcurrent_libdir="$(ROOTDIR)/build" $(JVM_TEST_ARGS)) jvminstall: (cd $(ROOTDIR)/jvm; \ mvn install -P$(JVM_PKG_PROFILE) -Dcxx="$(CXX)" \ -Dcflags="$(PKG_CFLAGS)" -Dldflags="$(PKG_LDFLAGS)" \ -Dcurrent_libdir="$(ROOTDIR)/build" $(JVM_TEST_ARGS)) # clean rule clean: @mkdir -p build && cd build && cmake .. && $(MAKE) clean