Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
tianlh
LightGBM-DCU
Commits
4536f435
Unverified
Commit
4536f435
authored
May 27, 2023
by
James Lamb
Committed by
GitHub
May 27, 2023
Browse files
add CMakeLists options to disable building CLI, installing headers (#5880)
parent
d47006f4
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
11 deletions
+54
-11
.ci/test.sh
.ci/test.sh
+18
-3
CMakeLists.txt
CMakeLists.txt
+35
-7
python-package/setup.py
python-package/setup.py
+1
-1
No files found.
.ci/test.sh
View file @
4536f435
...
...
@@ -198,7 +198,12 @@ if [[ $TASK == "gpu" ]]; then
if
[[
$METHOD
==
"pip"
]]
;
then
cd
$BUILD_DIRECTORY
&&
sh ./build-python.sh sdist
||
exit
-1
sh
$BUILD_DIRECTORY
/.ci/check_python_dists.sh
$BUILD_DIRECTORY
/dist
||
exit
-1
pip
install
--user
$BUILD_DIRECTORY
/dist/lightgbm-
$LGB_VER
.tar.gz
-v
--install-option
=
--gpu
||
exit
-1
pip
install
\
--user
\
-v
\
--install-option
=
--gpu
\
$BUILD_DIRECTORY
/dist/lightgbm-
$LGB_VER
.tar.gz
\
||
exit
-1
pytest
$BUILD_DIRECTORY
/tests/python_package_test
||
exit
-1
exit
0
elif
[[
$METHOD
==
"wheel"
]]
;
then
...
...
@@ -221,7 +226,12 @@ elif [[ $TASK == "cuda" ]]; then
if
[[
$METHOD
==
"pip"
]]
;
then
cd
$BUILD_DIRECTORY
&&
sh ./build-python.sh sdist
||
exit
-1
sh
$BUILD_DIRECTORY
/.ci/check_python_dists.sh
$BUILD_DIRECTORY
/dist
||
exit
-1
pip
install
--user
$BUILD_DIRECTORY
/dist/lightgbm-
$LGB_VER
.tar.gz
-v
--install-option
=
--cuda
||
exit
-1
pip
install
\
--user
\
-v
\
--install-option
=
--cuda
\
$BUILD_DIRECTORY
/dist/lightgbm-
$LGB_VER
.tar.gz
\
||
exit
-1
pytest
$BUILD_DIRECTORY
/tests/python_package_test
||
exit
-1
exit
0
elif
[[
$METHOD
==
"wheel"
]]
;
then
...
...
@@ -239,7 +249,12 @@ elif [[ $TASK == "mpi" ]]; then
if
[[
$METHOD
==
"pip"
]]
;
then
cd
$BUILD_DIRECTORY
&&
sh ./build-python.sh sdist
||
exit
-1
sh
$BUILD_DIRECTORY
/.ci/check_python_dists.sh
$BUILD_DIRECTORY
/dist
||
exit
-1
pip
install
--user
$BUILD_DIRECTORY
/dist/lightgbm-
$LGB_VER
.tar.gz
-v
--install-option
=
--mpi
||
exit
-1
pip
install
\
--user
\
-v
\
--install-option
=
--mpi
\
$BUILD_DIRECTORY
/dist/lightgbm-
$LGB_VER
.tar.gz
\
||
exit
-1
pytest
$BUILD_DIRECTORY
/tests/python_package_test
||
exit
-1
exit
0
elif
[[
$METHOD
==
"wheel"
]]
;
then
...
...
CMakeLists.txt
View file @
4536f435
...
...
@@ -15,8 +15,11 @@ set(
"Semicolon separated list of sanitizer names, e.g., 'address;leak'. \
Supported sanitizers are address, leak, undefined and thread."
)
option
(
BUILD_CLI
"Build the 'lightbgm' command-line interface in addition to lib_lightgbm"
ON
)
option
(
BUILD_CPP_TEST
"Build C++ tests with Google Test"
OFF
)
option
(
BUILD_STATIC_LIB
"Build static library"
OFF
)
option
(
INSTALL_HEADERS
"Install headers to CMAKE_INSTALL_PREFIX (e.g. '/usr/local/include')"
ON
)
option
(
__BUILD_FOR_PYTHON
"Set to ON if building lib_lightgbm for use with the Python package"
OFF
)
option
(
__BUILD_FOR_R
"Set to ON if building lib_lightgbm for use with the R package"
OFF
)
option
(
__INTEGRATE_OPENCL
"Set to ON if building LightGBM with the OpenCL ICD Loader and its dependencies included"
OFF
)
...
...
@@ -55,6 +58,14 @@ if(__INTEGRATE_OPENCL)
message
(
STATUS
"Building library with integrated OpenCL components"
)
endif
()
if
(
__BUILD_FOR_PYTHON OR __BUILD_FOR_R
)
# the Python and R package don't require the CLI
set
(
BUILD_CLI OFF
)
# installing the R and Python package shouldn't place LightGBM's headers
# outside of where the package is installed
set
(
INSTALL_HEADERS OFF
)
endif
()
if
(
CMAKE_CXX_COMPILER_ID STREQUAL
"GNU"
)
if
(
CMAKE_CXX_COMPILER_VERSION VERSION_LESS
"4.8.2"
)
message
(
FATAL_ERROR
"Insufficient gcc version"
)
...
...
@@ -421,8 +432,10 @@ endif()
add_library
(
lightgbm_objs OBJECT
${
SOURCES
}
)
add_executable
(
lightgbm src/main.cpp src/application/application.cpp
)
target_link_libraries
(
lightgbm PRIVATE lightgbm_objs
)
if
(
BUILD_CLI
)
add_executable
(
lightgbm src/main.cpp src/application/application.cpp
)
target_link_libraries
(
lightgbm PRIVATE lightgbm_objs
)
endif
()
set
(
API_SOURCES
"src/c_api.cpp"
)
# Only build the R part of the library if building for
...
...
@@ -544,19 +557,25 @@ if(USE_CUDA)
# each target that contains or depends on cuda source.
set_target_properties
(
lightgbm_objs PROPERTIES CUDA_ARCHITECTURES OFF
)
set_target_properties
(
_lightgbm PROPERTIES CUDA_ARCHITECTURES OFF
)
set_target_properties
(
lightgbm PROPERTIES CUDA_ARCHITECTURES OFF
)
if
(
BUILD_CLI
)
set_target_properties
(
lightgbm PROPERTIES CUDA_ARCHITECTURES OFF
)
endif
()
set_target_properties
(
lightgbm_objs PROPERTIES CUDA_SEPARABLE_COMPILATION ON
)
# Device linking is not supported for object libraries.
# Thus we have to specify them on final targets.
set_target_properties
(
lightgbm PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON
)
if
(
BUILD_CLI
)
set_target_properties
(
lightgbm PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON
)
endif
()
set_target_properties
(
_lightgbm PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON
)
# histograms are list of object libraries. Linking object library to other
# object libraries only gets usage requirements, the linked objects won't be
# used. Thus we have to call target_link_libraries on final targets here.
target_link_libraries
(
lightgbm PRIVATE
${
histograms
}
)
if
(
BUILD_CLI
)
target_link_libraries
(
lightgbm PRIVATE
${
histograms
}
)
endif
()
target_link_libraries
(
_lightgbm PRIVATE
${
histograms
}
)
endif
()
...
...
@@ -619,11 +638,20 @@ if(BUILD_CPP_TEST)
target_link_libraries
(
testlightgbm PRIVATE lightgbm_objs lightgbm_capi_objs GTest::GTest
)
endif
()
if
(
BUILD_CLI
)
install
(
TARGETS lightgbm
RUNTIME DESTINATION
${
CMAKE_INSTALL_PREFIX
}
/bin
)
endif
()
install
(
TARGETS
lightgbm
_lightgbm
TARGETS _lightgbm
RUNTIME DESTINATION
${
CMAKE_INSTALL_PREFIX
}
/bin
LIBRARY DESTINATION
${
CMAKE_INSTALL_PREFIX
}
/lib
ARCHIVE DESTINATION
${
CMAKE_INSTALL_PREFIX
}
/lib
)
install
(
DIRECTORY
${
LightGBM_HEADER_DIR
}
/LightGBM DESTINATION
${
CMAKE_INSTALL_PREFIX
}
/include
)
if
(
INSTALL_HEADERS
)
install
(
DIRECTORY
${
LightGBM_HEADER_DIR
}
/LightGBM DESTINATION
${
CMAKE_INSTALL_PREFIX
}
/include
)
endif
()
python-package/setup.py
View file @
4536f435
...
...
@@ -91,7 +91,7 @@ def compile_cpp(
logger
.
info
(
"Starting to compile the library."
)
cmake_cmd
=
[
"cmake"
,
str
(
CURRENT_DIR
/
"compile"
)]
cmake_cmd
=
[
"cmake"
,
str
(
CURRENT_DIR
/
"compile"
)
,
"-D__BUILD_FOR_PYTHON=ON"
]
if
integrated_opencl
:
use_gpu
=
False
cmake_cmd
.
append
(
"-D__INTEGRATE_OPENCL=ON"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment