* [Python] Require black and isort for new Python files. - Require black and isort for spark and dask module. These files are relatively new and are more conform to the black formatter. We will convert the rest of the library as we move forward. Other libraries including dask/distributed and optuna use the same formatting style and have a more strict standard. The black formatter is indeed quite nice, automating it can help us unify the code style. - Gather Python checks into a single script.
154 lines
4.7 KiB
Makefile
154 lines
4.7 KiB
Makefile
ifndef DMLC_CORE
|
|
DMLC_CORE = dmlc-core
|
|
endif
|
|
|
|
ifndef RABIT
|
|
RABIT = rabit
|
|
endif
|
|
|
|
ROOTDIR = $(CURDIR)
|
|
|
|
# workarounds for some buggy old make & msys2 versions seen in windows
|
|
ifeq (NA, $(shell test ! -d "$(ROOTDIR)" && echo NA ))
|
|
$(warning Attempting to fix non-existing ROOTDIR [$(ROOTDIR)])
|
|
ROOTDIR := $(shell pwd)
|
|
$(warning New ROOTDIR [$(ROOTDIR)] $(shell test -d "$(ROOTDIR)" && echo " is OK" ))
|
|
endif
|
|
MAKE_OK := $(shell "$(MAKE)" -v 2> /dev/null)
|
|
ifndef MAKE_OK
|
|
$(warning Attempting to recover non-functional MAKE [$(MAKE)])
|
|
MAKE := $(shell which make 2> /dev/null)
|
|
MAKE_OK := $(shell "$(MAKE)" -v 2> /dev/null)
|
|
endif
|
|
$(warning MAKE [$(MAKE)] - $(if $(MAKE_OK),checked OK,PROBLEM))
|
|
|
|
include $(DMLC_CORE)/make/dmlc.mk
|
|
|
|
# set compiler defaults for OSX versus *nix
|
|
# let people override either
|
|
OS := $(shell uname)
|
|
ifeq ($(OS), Darwin)
|
|
ifndef CC
|
|
export CC = $(if $(shell which clang), clang, gcc)
|
|
endif
|
|
ifndef CXX
|
|
export CXX = $(if $(shell which clang++), clang++, g++)
|
|
endif
|
|
else
|
|
# linux defaults
|
|
ifndef CC
|
|
export CC = gcc
|
|
endif
|
|
ifndef CXX
|
|
export CXX = g++
|
|
endif
|
|
endif
|
|
|
|
export CFLAGS= -DDMLC_LOG_CUSTOMIZE=1 -std=c++14 -Wall -Wno-unknown-pragmas -Iinclude $(ADD_CFLAGS)
|
|
CFLAGS += -I$(DMLC_CORE)/include -I$(RABIT)/include -I$(GTEST_PATH)/include
|
|
|
|
ifeq ($(TEST_COVER), 1)
|
|
CFLAGS += -g -O0 -fprofile-arcs -ftest-coverage
|
|
else
|
|
CFLAGS += -O3 -funroll-loops
|
|
endif
|
|
|
|
ifndef LINT_LANG
|
|
LINT_LANG= "all"
|
|
endif
|
|
|
|
# specify tensor path
|
|
.PHONY: clean all lint clean_all doxygen rcpplint pypack Rpack Rbuild Rcheck
|
|
|
|
build/%.o: src/%.cc
|
|
@mkdir -p $(@D)
|
|
$(CXX) $(CFLAGS) -MM -MT build/$*.o $< >build/$*.d
|
|
$(CXX) -c $(CFLAGS) $< -o $@
|
|
|
|
# The should be equivalent to $(ALL_OBJ) except for build/cli_main.o
|
|
amalgamation/xgboost-all0.o: amalgamation/xgboost-all0.cc
|
|
$(CXX) -c $(CFLAGS) $< -o $@
|
|
|
|
rcpplint:
|
|
python3 dmlc-core/scripts/lint.py xgboost ${LINT_LANG} R-package/src
|
|
|
|
lint: rcpplint
|
|
python3 dmlc-core/scripts/lint.py --exclude_path python-package/xgboost/dmlc-core \
|
|
python-package/xgboost/include python-package/xgboost/lib \
|
|
python-package/xgboost/make python-package/xgboost/rabit \
|
|
python-package/xgboost/src --pylint-rc ${PWD}/python-package/.pylintrc xgboost \
|
|
${LINT_LANG} include src python-package
|
|
|
|
ifeq ($(TEST_COVER), 1)
|
|
cover: check
|
|
@- $(foreach COV_OBJ, $(COVER_OBJ), \
|
|
gcov -pbcul -o $(shell dirname $(COV_OBJ)) $(COV_OBJ) > gcov.log || cat gcov.log; \
|
|
)
|
|
endif
|
|
|
|
|
|
clean:
|
|
$(RM) -rf build lib bin *~ */*~ */*/*~ */*/*/*~ */*.o */*/*.o */*/*/*.o #xgboost
|
|
$(RM) -rf build_tests *.gcov tests/cpp/xgboost_test
|
|
if [ -d "R-package/src" ]; then \
|
|
cd R-package/src; \
|
|
$(RM) -rf rabit src include dmlc-core amalgamation *.so *.dll; \
|
|
cd $(ROOTDIR); \
|
|
fi
|
|
|
|
clean_all: clean
|
|
cd $(DMLC_CORE); "$(MAKE)" clean; cd $(ROOTDIR)
|
|
cd $(RABIT); "$(MAKE)" clean; cd $(ROOTDIR)
|
|
|
|
# create pip source dist (sdist) pack for PyPI
|
|
pippack: clean_all
|
|
cd python-package; python setup.py sdist; mv dist/*.tar.gz ..; cd ..
|
|
|
|
# Script to make a clean installable R package.
|
|
Rpack: clean_all
|
|
rm -rf xgboost xgboost*.tar.gz
|
|
cp -r R-package xgboost
|
|
rm -rf xgboost/src/*.o xgboost/src/*.so xgboost/src/*.dll
|
|
rm -rf xgboost/src/*/*.o
|
|
rm -rf xgboost/demo/*.model xgboost/demo/*.buffer xgboost/demo/*.txt
|
|
rm -rf xgboost/demo/runall.R
|
|
cp -r src xgboost/src/src
|
|
cp -r include xgboost/src/include
|
|
cp -r amalgamation xgboost/src/amalgamation
|
|
mkdir -p xgboost/src/rabit
|
|
cp -r rabit/include xgboost/src/rabit/include
|
|
cp -r rabit/src xgboost/src/rabit/src
|
|
rm -rf xgboost/src/rabit/src/*.o
|
|
mkdir -p xgboost/src/dmlc-core
|
|
cp -r dmlc-core/include xgboost/src/dmlc-core/include
|
|
cp -r dmlc-core/src xgboost/src/dmlc-core/src
|
|
cp ./LICENSE xgboost
|
|
# Modify PKGROOT in Makevars.in
|
|
cat R-package/src/Makevars.in|sed '2s/.*/PKGROOT=./' > xgboost/src/Makevars.in
|
|
# Configure Makevars.win (Windows-specific Makevars, likely using MinGW)
|
|
cp xgboost/src/Makevars.in xgboost/src/Makevars.win
|
|
cat xgboost/src/Makevars.in| sed '3s/.*/ENABLE_STD_THREAD=0/' > xgboost/src/Makevars.win
|
|
sed -i -e 's/@OPENMP_CXXFLAGS@/$$\(SHLIB_OPENMP_CXXFLAGS\)/g' xgboost/src/Makevars.win
|
|
sed -i -e 's/-pthread/$$\(SHLIB_PTHREAD_FLAGS\)/g' xgboost/src/Makevars.win
|
|
sed -i -e 's/@ENDIAN_FLAG@/-DDMLC_CMAKE_LITTLE_ENDIAN=1/g' xgboost/src/Makevars.win
|
|
sed -i -e 's/@BACKTRACE_LIB@//g' xgboost/src/Makevars.win
|
|
sed -i -e 's/@OPENMP_LIB@//g' xgboost/src/Makevars.win
|
|
rm -f xgboost/src/Makevars.win-e # OSX sed create this extra file; remove it
|
|
bash R-package/remove_warning_suppression_pragma.sh
|
|
bash xgboost/remove_warning_suppression_pragma.sh
|
|
rm xgboost/remove_warning_suppression_pragma.sh
|
|
rm xgboost/CMakeLists.txt
|
|
rm -rfv xgboost/tests/helper_scripts/
|
|
|
|
R ?= R
|
|
|
|
Rbuild: Rpack
|
|
$(R) CMD build xgboost
|
|
rm -rf xgboost
|
|
|
|
Rcheck: Rbuild
|
|
$(R) CMD check --as-cran xgboost*.tar.gz
|
|
|
|
-include build/*.d
|
|
-include build/*/*.d
|