Skip to content

Commit 88a381f

Browse files
authored
chore: run ninja test suite as part of the build (#142)
1 parent 61ab1dd commit 88a381f

File tree

2 files changed

+57
-65
lines changed

2 files changed

+57
-65
lines changed

CMakeLists.txt

Lines changed: 56 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
cmake_minimum_required(VERSION 3.6)
1+
cmake_minimum_required(VERSION 3.15)
22

33
project(NinjaPythonDistributions)
44

55
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_MODULE_PATH})
66

77
# Options
88
option(BUILD_VERBOSE "Display additional information while building (e.g download progress, ...)" OFF)
9+
option(RUN_NINJA_TEST "Run Ninja test suite" ON)
910
set(ARCHIVE_DOWNLOAD_DIR "${CMAKE_BINARY_DIR}" CACHE PATH "Directory where to download archives")
1011

1112
include(NinjaUrls)
@@ -35,6 +36,7 @@ message(STATUS "*********************************************")
3536
message(STATUS "Ninja Python Distribution")
3637
message(STATUS "")
3738
message(STATUS " BUILD_VERBOSE : ${BUILD_VERBOSE}")
39+
message(STATUS " RUN_NINJA_TEST : ${RUN_NINJA_TEST}")
3840
message(STATUS "")
3941
message(STATUS " ARCHIVE_DOWNLOAD_DIR : ${ARCHIVE_DOWNLOAD_DIR}")
4042
message(STATUS "")
@@ -80,75 +82,64 @@ endif()
8082
#-----------------------------------------------------------------------------
8183
# Build from source
8284
#-----------------------------------------------------------------------------
83-
if(UNIX AND NOT APPLE)
84-
# We're more likely to build from sources from PyPI on UNIX
85-
# In order to relax the constraint on CMake version,
86-
# use the python bootstrap script rather than the CMake build (requires 3.15+)
87-
88-
# Dependencies
89-
find_package(PythonInterp REQUIRED)
90-
91-
#configure.py is deprecated by ninja-build project.
92-
set(ninja_executable ${Ninja_SOURCE_DIR}/cmake-build/ninja${CMAKE_EXECUTABLE_SUFFIX})
93-
set(local_cmake_command ${CMAKE_COMMAND} -Bcmake-build -H. && ${CMAKE_COMMAND} --build cmake-build)
94-
add_custom_command(
95-
COMMAND ${local_cmake_command}
96-
OUTPUT ${ninja_executable}
97-
WORKING_DIRECTORY ${Ninja_SOURCE_DIR}
98-
)
99-
add_custom_target(build_ninja ALL
100-
DEPENDS download_ninja_source ${ninja_executable}
101-
)
102-
else()
103-
set(Ninja_BINARY_DIR ${CMAKE_BINARY_DIR}/Ninja-build)
104-
# cache arguments
105-
set(_cache_args )
106-
foreach(var_name IN ITEMS
107-
CMAKE_BUILD_TYPE
108-
CMAKE_TOOLCHAIN_FILE
109-
CMAKE_BUILD_PARALLEL_LEVEL
110-
CMAKE_JOB_POOLS
111-
CMAKE_JOB_POOL_COMPILE
112-
CMAKE_JOB_POOL_LINK
113-
CMAKE_OSX_DEPLOYMENT_TARGET
114-
CMAKE_OSX_ARCHITECTURES
115-
CMAKE_OSX_SYSROOT
116-
)
117-
if(DEFINED ${var_name})
118-
list(APPEND _cache_args
119-
-D${var_name}:STRING=${${var_name}}
120-
)
121-
message(STATUS "SuperBuild - ${var_name}: ${${var_name}}")
122-
endif()
123-
endforeach()
124-
# _cache_args should not be empty
125-
list(APPEND _cache_args
126-
-DNINJA_SUPERBUILD:BOOL=true
127-
)
128-
ExternalProject_add(build_ninja
129-
SOURCE_DIR ${Ninja_SOURCE_DIR}
130-
BINARY_DIR ${Ninja_BINARY_DIR}
131-
DOWNLOAD_COMMAND ""
132-
UPDATE_COMMAND ""
133-
BUILD_ALWAYS 1
134-
USES_TERMINAL_CONFIGURE 1
135-
USES_TERMINAL_BUILD 1
136-
INSTALL_COMMAND ""
137-
CMAKE_CACHE_ARGS ${_cache_args}
138-
DEPENDS
139-
download_ninja_source
140-
)
141-
set(ninja_executable ${Ninja_BINARY_DIR}/ninja${CMAKE_EXECUTABLE_SUFFIX})
142-
endif()
85+
set(Ninja_BINARY_DIR ${CMAKE_BINARY_DIR}/Ninja-build)
86+
# cache arguments
87+
set(_cache_args )
88+
foreach(var_name IN ITEMS
89+
CMAKE_BUILD_TYPE
90+
CMAKE_TOOLCHAIN_FILE
91+
CMAKE_BUILD_PARALLEL_LEVEL
92+
CMAKE_JOB_POOLS
93+
CMAKE_JOB_POOL_COMPILE
94+
CMAKE_JOB_POOL_LINK
95+
CMAKE_OSX_DEPLOYMENT_TARGET
96+
CMAKE_OSX_ARCHITECTURES
97+
CMAKE_OSX_SYSROOT
98+
)
99+
if(DEFINED ${var_name})
100+
list(APPEND _cache_args -D${var_name}:STRING=${${var_name}})
101+
message(STATUS "SuperBuild - ${var_name}: ${${var_name}}")
102+
endif()
103+
endforeach()
104+
105+
# _cache_args should not be empty
106+
list(APPEND _cache_args -DNINJA_SUPERBUILD:BOOL=true)
107+
ExternalProject_add(build_ninja
108+
SOURCE_DIR ${Ninja_SOURCE_DIR}
109+
BINARY_DIR ${Ninja_BINARY_DIR}
110+
DOWNLOAD_COMMAND ""
111+
UPDATE_COMMAND ""
112+
BUILD_ALWAYS 1
113+
USES_TERMINAL_CONFIGURE 1
114+
USES_TERMINAL_BUILD 1
115+
INSTALL_COMMAND ""
116+
CMAKE_CACHE_ARGS ${_cache_args}
117+
DEPENDS
118+
download_ninja_source
119+
)
120+
set(ninja_executable ${Ninja_BINARY_DIR}/ninja${CMAKE_EXECUTABLE_SUFFIX})
121+
set(NINJA_BUILD_LAST_STEP "build")
143122

144123
find_program(STRIP_EXECUTABLE strip)
145124
if(STRIP_EXECUTABLE)
146-
add_custom_target(strip_ninja_executable ALL
125+
ExternalProject_Add_Step(build_ninja strip_executables
126+
DEPENDEES ${NINJA_BUILD_LAST_STEP}
127+
COMMENT "Stripping CMake executables"
147128
COMMAND ${STRIP_EXECUTABLE} ${ninja_executable}
148-
WORKING_DIRECTORY ${Ninja_SOURCE_DIR}
149-
COMMENT "Stripping ninja executable"
129+
USES_TERMINAL 1
130+
)
131+
set(NINJA_BUILD_LAST_STEP "strip_executables")
132+
endif()
133+
134+
if(RUN_NINJA_TEST)
135+
ExternalProject_Add_Step(build_ninja run_ninja_test_suite
136+
DEPENDEES ${NINJA_BUILD_LAST_STEP}
137+
COMMENT "Running Ninja test suite"
138+
COMMAND ${Ninja_BINARY_DIR}/ninja_test${CMAKE_EXECUTABLE_SUFFIX}
139+
WORKING_DIRECTORY ${Ninja_BINARY_DIR}
140+
USES_TERMINAL 1
150141
)
151-
add_dependencies(strip_ninja_executable build_ninja)
142+
set(NINJA_BUILD_LAST_STEP "run_ninja_test_suite")
152143
endif()
153144

154145
install(FILES ${Ninja_SOURCE_DIR}/misc/ninja_syntax.py DESTINATION src/ninja)

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ build-backend = "setuptools.build_meta"
77

88
[tool.cibuildwheel]
99
build = "cp39-*"
10+
build-verbosity = 1
1011
before-all = [
1112
'pipx install -f --pip-args="-c {project}/constraints-ci.txt" cmake',
1213
'cmake --version',

0 commit comments

Comments
 (0)