Skip to content

Commit 9d16d71

Browse files
author
Diptorup Deb
authored
Merge pull request #766 from IntelPython/cmake-cleanup
Cmake cleanup
2 parents 00bc959 + 5505657 commit 9d16d71

File tree

13 files changed

+88
-44
lines changed

13 files changed

+88
-44
lines changed

.github/workflows/generate-coverage.yaml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ jobs:
3232
sudo apt-get install intel-oneapi-compiler-dpcpp-cpp
3333
sudo apt-get install intel-oneapi-tbb
3434
35-
- name: Install CMake
35+
- name: Install CMake and Ninja
3636
run: |
37-
sudo apt-get install cmake
37+
sudo apt-get install cmake ninja-build
3838
3939
- name: Setup Python
4040
uses: actions/setup-python@v2
@@ -87,8 +87,18 @@ jobs:
8787
source /opt/intel/oneapi/setvars.sh
8888
export _SAVED_PATH=${PATH}
8989
export PATH=$(dirname $(dirname $(which icx)))/bin-llvm:${PATH}
90-
python setup.py develop -- -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON -DDPCTL_GENERATE_COVERAGE=ON -DDPCTL_BUILD_CAPI_TESTS=ON -DDPCTL_COVERAGE_REPORT_OUTPUT_DIR=$(pwd)
91-
make -C $(find _skbuild -name tests) lcov-genhtml
90+
python setup.py develop -- \
91+
-G "Ninja" \
92+
-DCMAKE_BUILD_TYPE=Debug \
93+
-DCMAKE_C_COMPILER:PATH=icx \
94+
-DCMAKE_CXX_COMPILER:PATH=icpx \
95+
-DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON \
96+
-DDPCTL_GENERATE_COVERAGE=ON \
97+
-DDPCTL_BUILD_CAPI_TESTS=ON \
98+
-DDPCTL_COVERAGE_REPORT_OUTPUT_DIR=$(pwd)
99+
pushd $(find _skbuild -name cmake-build)
100+
cmake --build . --target lcov-genhtml || exit 1
101+
popd
92102
export PATH=${_SAVED_PATH}
93103
unset _SAVED_PATH
94104
python -c "import dpctl; print(dpctl.__version__); dpctl.lsplatform()" || exit 1
@@ -98,7 +108,7 @@ jobs:
98108
shell: bash -l {0}
99109
run: |
100110
sudo gem install coveralls-lcov
101-
pip install coveralls==3.2.0
111+
pip install coveralls
102112
103113
- name: Upload coverage data to coveralls.io
104114
shell: bash -l {0}

.github/workflows/generate-docs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ jobs:
3535
if: ${{ !github.event.pull_request || github.event.action != 'closed' }}
3636
run: |
3737
sudo apt-get install doxygen
38-
- name: Install CMake
38+
- name: Install CMake and Ninja
3939
if: ${{ !github.event.pull_request || github.event.action != 'closed' }}
4040
run: |
41-
sudo apt-get install cmake
41+
sudo apt-get install cmake ninja-build
4242
- name: Setup Python
4343
if: ${{ !github.event.pull_request || github.event.action != 'closed' }}
4444
uses: actions/setup-python@v2
@@ -64,7 +64,7 @@ jobs:
6464
wget https://github.com/vovkos/doxyrest/releases/download/doxyrest-2.1.2/doxyrest-2.1.2-linux-amd64.tar.xz
6565
tar xf doxyrest-2.1.2-linux-amd64.tar.xz
6666
python setup.py develop -- \
67-
-G "Unix Makefiles" \
67+
-G "Ninja" \
6868
-DCMAKE_BUILD_TYPE=Debug \
6969
-DCMAKE_C_COMPILER:PATH=icx \
7070
-DCMAKE_CXX_COMPILER:PATH=icpx \

.github/workflows/os-llvm-sycl-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
- name: Install system components
6969
shell: bash -l {0}
7070
run: |
71-
sudo apt-get install cmake libtinfo5
71+
sudo apt-get install cmake ninja-build libtinfo5
7272
7373
- name: Setup Python
7474
uses: actions/setup-python@v2
@@ -97,6 +97,6 @@ jobs:
9797
export OCL_ICD_FILENAMES=libintelocl.so:libintelocl_emu.so
9898
clang++ --version
9999
sycl-ls
100-
python setup.py develop -- -G "Unix Makefiles" -DCMAKE_C_COMPILER:PATH=clang -DCMAKE_CXX_COMPILER:PATH=clang++ -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON -DDPCTL_DPCPP_HOME_DIR=$(dirname $(dirname $(which clang))) -DDPCTL_DPCPP_FROM_ONEAPI=OFF
100+
python setup.py develop -- -G Ninja -DCMAKE_C_COMPILER:PATH=clang -DCMAKE_CXX_COMPILER:PATH=clang++ -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON -DDPCTL_DPCPP_HOME_DIR=$(dirname $(dirname $(which clang))) -DDPCTL_DPCPP_FROM_ONEAPI=OFF
101101
python -c "import dpctl; dpctl.lsplatform()" || exit 1
102102
SYCL_ENABLE_HOST_DEVICE=1 python -m pytest -v dpctl/tests

CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ add_subdirectory(libsyclinterface)
1515
file(GLOB _dpctl_capi_headers dpctl/apis/include/*.h*)
1616
install(FILES ${_dpctl_capi_headers}
1717
DESTINATION dpctl/include
18-
COMPONENT DpctlCAPIHeaders
1918
)
2019

2120
add_subdirectory(dpctl)

conda-recipe/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
export LDFLAGS="$LDFLAGS -Wl,-rpath,$PREFIX/lib"
77

88
${PYTHON} setup.py clean --all
9-
export CMAKE_GENERATOR="Unix Makefiles"
9+
export CMAKE_GENERATOR="Ninja"
1010
SKBUILD_ARGS="-- -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON -DDPCTL_DPCPP_HOME_DIR=${BUILD_PREFIX}"
1111
echo "${PYTHON} setup.py install ${SKBUILD_ARGS}"
1212

conda-recipe/meta.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ requirements:
2020
- cython
2121
- cmake >=3.21
2222
- python
23-
- make # [unix]
24-
- ninja # [win]
23+
- ninja
2524
- scikit-build
2625
- numpy 1.19
2726
- wheel

docs/docfiles/user_guides/QuickStart.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ installed:
143143
- ``numpy``
144144
- ``cmake``
145145
- ``scikit-build``
146-
- ``ninja`` (only on Windows)
146+
- ``ninja``
147147
- ``gtest`` (optional to run C API tests)
148148
- ``gmock`` (optional to run C API tests)
149149
- ``pytest`` (optional to run Python API tests)
@@ -152,15 +152,15 @@ Once the prerequisites are installed, building using ``scikit-build`` involves t
152152

153153
.. code-block:: bash
154154
155-
python setup.py install -- -G Unix\ Makefiles -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON
155+
python setup.py install -- -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON
156156
157157
, and to develop:
158158

159159
.. code-block:: bash
160160
161-
python setup.py develop -G Unix\ Makefiles -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON
161+
python setup.py develop -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ON
162162
163-
On Windows, use ``icx`` for both C and CXX compilers, and use :code:`-G Ninja` for cmake generator.
163+
On Windows, use ``icx`` for both C and CXX compilers.
164164

165165
Developing on Linux can also be done using driver script:
166166

@@ -180,7 +180,7 @@ Following steps in `Build and install with scikit-build`_ use command line optio
180180

181181
.. code-block:: bash
182182
183-
python setup.py develop -- -G Unix\ Makefiles -DCMAKE_C_COMPILER:PATH=clang -DCMAKE_CXX_COMPILER:PATH=clang++ -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ONE -DDPCTL_DPCPP_HOME_DIR=${DPCPP_ROOT}/llvm/build -DDPCTL_DPCPP_FROM_ONEAPI=OFF
183+
python setup.py develop -- -G Ninja -DCMAKE_C_COMPILER:PATH=clang -DCMAKE_CXX_COMPILER:PATH=clang++ -DDPCTL_ENABLE_LO_PROGRAM_CREATION=ONE -DDPCTL_DPCPP_HOME_DIR=${DPCPP_ROOT}/llvm/build -DDPCTL_DPCPP_FROM_ONEAPI=OFF
184184
185185
Alterantively, the driver script can be used
186186

dpctl/CMakeLists.txt

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
find_package(PythonExtensions REQUIRED)
33
find_package(NumPy REQUIRED)
44

5-
set(CYTHON_FLAGS "-w ${CMAKE_SOURCE_DIR}")
5+
set(CYTHON_FLAGS "-t -w ${CMAKE_SOURCE_DIR}")
66
find_package(Cython REQUIRED)
77

88
if(WIN32)
@@ -78,41 +78,64 @@ add_custom_target(_build_time_create_dpctl_include ALL
7878
DEPENDS DPCTLSyclInterface
7979
)
8080

81+
set(_copied_header_files)
8182
file(GLOB _syclinterface_h ${CMAKE_SOURCE_DIR}/libsyclinterface/include/*.h)
8283
foreach(hf ${_syclinterface_h})
83-
add_custom_command(TARGET _build_time_create_dpctl_include
84-
COMMAND ${CMAKE_COMMAND} -E copy ${hf} ${DPCTL_INCLUDE_DIR}/syclinterface
85-
)
84+
get_filename_component(_header_name ${hf} NAME)
85+
set(_target_header_file ${DPCTL_INCLUDE_DIR}/syclinterface/${_header_name})
86+
list(APPEND _copied_header_files ${_target_header_file})
87+
add_custom_command(OUTPUT ${_target_header_file}
88+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file}
89+
DEPENDS ${hf} _build_time_create_dpctl_include
90+
VERBATIM
91+
)
8692
endforeach()
8793

8894
file(GLOB _syclinterface_Support_h ${CMAKE_SOURCE_DIR}/libsyclinterface/include/Support/*.h)
8995
foreach(hf ${_syclinterface_Support_h})
90-
add_custom_command(TARGET _build_time_create_dpctl_include
91-
COMMAND ${CMAKE_COMMAND} -E copy ${hf} ${DPCTL_INCLUDE_DIR}/syclinterface/Support
92-
)
96+
get_filename_component(_header_name ${hf} NAME)
97+
set(_target_header_file ${DPCTL_INCLUDE_DIR}/syclinterface/Support/${_header_name})
98+
list(APPEND _copied_header_files ${_target_header_file})
99+
add_custom_command(OUTPUT ${_target_header_file}
100+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file}
101+
DEPENDS ${hf} _build_time_create_dpctl_include
102+
)
93103
endforeach()
94104

95105
file(GLOB _syclinterface_Config_h ${CMAKE_SOURCE_DIR}/libsyclinterface/include/Config/*.h)
96106
foreach(hf ${_syclinterface_Config_h})
97-
add_custom_command(TARGET _build_time_create_dpctl_include
98-
COMMAND ${CMAKE_COMMAND} -E copy ${hf} ${DPCTL_INCLUDE_DIR}/syclinterface/Config
99-
)
107+
get_filename_component(_header_name ${hf} NAME)
108+
set(_target_header_file ${DPCTL_INCLUDE_DIR}/syclinterface/Config/${_header_name})
109+
list(APPEND _copied_header_files ${_target_header_file})
110+
add_custom_command(OUTPUT ${_target_header_file}
111+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file}
112+
DEPENDS ${hf} _build_time_create_dpctl_include
113+
)
100114
endforeach()
101115

102116
file(GLOB _apis_h ${CMAKE_CURRENT_SOURCE_DIR}/apis/include/*)
103117
foreach(hf ${_apis_h})
104-
add_custom_command(TARGET _build_time_create_dpctl_include
105-
COMMAND ${CMAKE_COMMAND} -E copy ${hf} ${DPCTL_INCLUDE_DIR}
106-
)
118+
get_filename_component(_header_name ${hf} NAME)
119+
set(_target_header_file ${DPCTL_INCLUDE_DIR}/${_header_name})
120+
list(APPEND _copied_header_files ${_target_header_file})
121+
add_custom_command(OUTPUT ${_target_header_file}
122+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file}
123+
DEPENDS ${hf} _build_time_create_dpctl_include
124+
)
107125
endforeach()
108126

127+
add_custom_target(
128+
_build_time_create_dpctl_include_copy ALL
129+
DEPENDS ${_copied_header_files}
130+
)
131+
109132
set(CMAKE_INSTALL_RPATH "$ORIGIN")
110133

111134
function(build_dpctl_ext _trgt _src _dest)
112135
add_cython_target(${_trgt} ${_src} CXX OUTPUT_VAR _generated_src)
113136
add_library(${_trgt} MODULE ${_generated_src})
114137
target_include_directories(${_trgt} PRIVATE ${NumPy_INCLUDE_DIR} ${DPCTL_INCLUDE_DIR})
115-
add_dependencies(${_trgt} _build_time_create_dpctl_include)
138+
add_dependencies(${_trgt} _build_time_create_dpctl_include_copy)
116139
if (DPCTL_GENERATE_COVERAGE)
117140
target_compile_definitions(${_trgt} PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1)
118141
target_compile_options(${_trgt} PRIVATE -fno-sycl-use-footer)

libsyclinterface/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,13 @@ file(GLOB MAIN_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
214214
file(GLOB SUPPORT_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/Support/*.h")
215215
file(GLOB CONFIG_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/Config/*.h")
216216

217+
set(ALL_HEADERS "${MAIN_HEADERS}")
218+
list(APPEND ALL_HEADERS "${SUPPORT_HEADERS}")
219+
list(APPEND ALL_HEADERS "${CONFIG_HEADERS}")
220+
217221
set_target_properties(DPCTLSyclInterface
218222
PROPERTIES PUBLIC_HEADER
219-
"${MAIN_HEADERS}"
223+
"${ALL_HEADERS}"
220224
)
221225

222226
if (SKBUILD)
@@ -241,12 +245,10 @@ install(TARGETS
241245
install(
242246
FILES ${SUPPORT_HEADERS}
243247
DESTINATION ${_include_destination}/Support
244-
COMPONENT SupportHeaders
245248
)
246249
install(
247250
FILES ${CONFIG_HEADERS}
248251
DESTINATION ${_include_destination}/Config
249-
COMPONENT ConfigHeaders
250252
)
251253

252254
# Enable code coverage related settings

libsyclinterface/tests/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ if(DPCTL_GENERATE_COVERAGE)
6161
${CMAKE_DL_LIBS}
6262
)
6363
add_custom_target(llvm-cov
64-
COMMAND ${CMAKE_MAKE_PROGRAM} dpctl_c_api_tests
6564
COMMAND ${CMAKE_COMMAND} -E env DPCTL_VERBOSITY=warning ${CMAKE_CURRENT_BINARY_DIR}/dpctl_c_api_tests
6665
COMMAND ${LLVMProfdata_EXE}
6766
merge
@@ -75,10 +74,10 @@ if(DPCTL_GENERATE_COVERAGE)
7574
${dpctl_sources}
7675
${helper_sources}
7776
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
77+
DEPENDS dpctl_c_api_tests
7878
)
7979

8080
add_custom_target(lcov-genhtml
81-
COMMAND ${CMAKE_MAKE_PROGRAM} llvm-cov
8281
COMMAND ${LLVMCov_EXE}
8382
export
8483
-format=lcov
@@ -91,6 +90,7 @@ if(DPCTL_GENERATE_COVERAGE)
9190
--output-directory
9291
${COVERAGE_OUTPUT_DIR}/dpctl-c-api-coverage
9392
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
93+
DEPENDS llvm-cov
9494
)
9595
else()
9696
file(GLOB_RECURSE sources ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)

scripts/build_locally.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def run(
3232
build_system = None
3333

3434
if "linux" in sys.platform:
35-
build_system = "Unix Makefiles"
35+
build_system = "Ninja"
3636
elif sys.platform in ["win32", "cygwin"]:
3737
build_system = "Ninja"
3838
else:

scripts/gen_coverage.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def run(
2727
compiler_root=None,
2828
run_pytest=False,
2929
bin_llvm=None,
30+
gtest_config=None,
3031
):
3132
IS_LIN = False
3233

@@ -48,7 +49,7 @@ def run(
4849
"develop",
4950
"--",
5051
"-G",
51-
"Unix Makefiles",
52+
"Ninja",
5253
"-DCMAKE_BUILD_TYPE=Debug",
5354
"-DCMAKE_C_COMPILER:PATH=" + c_compiler,
5455
"-DCMAKE_CXX_COMPILER:PATH=" + cxx_compiler,
@@ -66,18 +67,22 @@ def run(
6667
if bin_llvm:
6768
env = {
6869
"PATH": ":".join((os.environ.get("PATH", ""), bin_llvm)),
70+
"LLVM_TOOLS_HOME": bin_llvm,
6971
}
7072
env.update({k: v for k, v in os.environ.items() if k != "PATH"})
73+
if gtest_config:
74+
cmake_args += ["-DCMAKE_PREFIX_PATH=" + gtest_config]
7175
subprocess.check_call(cmake_args, shell=False, cwd=setup_dir, env=env)
72-
test_dir = (
76+
cmake_build_dir = (
7377
subprocess.check_output(
74-
["find", "_skbuild", "-name", "tests"], cwd=setup_dir
78+
["find", "_skbuild", "-name", "cmake-build"], cwd=setup_dir
7579
)
7680
.decode("utf-8")
7781
.strip("\n")
7882
)
7983
subprocess.check_call(
80-
["make", "-C", test_dir, "lcov-genhtml"], cwd=setup_dir
84+
["cmake", "--build", ".", "--target", "lcov-genhtml"],
85+
cwd=cmake_build_dir,
8186
)
8287
subprocess.check_call(
8388
[
@@ -135,6 +140,11 @@ def run(
135140
driver.add_argument(
136141
"--bin-llvm", help="Path to folder where llvm-cov can be found"
137142
)
143+
driver.add_argument(
144+
"--gtest-config",
145+
help="Path to the GTestConfig.cmake file to locate a "
146+
+ "custom GTest installation.",
147+
)
138148
args = parser.parse_args()
139149

140150
if args.oneapi:
@@ -170,4 +180,5 @@ def run(
170180
compiler_root=args.compiler_root,
171181
run_pytest=args.run_pytest,
172182
bin_llvm=args.bin_llvm,
183+
gtest_config=args.gtest_config,
173184
)

scripts/gen_docs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def run(
4848
"develop",
4949
"--",
5050
"-G",
51-
"Unix Makefiles",
51+
"Ninja",
5252
"-DCMAKE_BUILD_TYPE=Debug",
5353
"-DCMAKE_C_COMPILER:PATH=" + c_compiler,
5454
"-DCMAKE_CXX_COMPILER:PATH=" + cxx_compiler,

0 commit comments

Comments
 (0)