|
1 |
| -cmake_minimum_required(VERSION 3.6) |
| 1 | +cmake_minimum_required(VERSION 3.15) |
2 | 2 |
|
3 | 3 | project(NinjaPythonDistributions)
|
4 | 4 |
|
5 | 5 | set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_MODULE_PATH})
|
6 | 6 |
|
7 | 7 | # Options
|
8 | 8 | option(BUILD_VERBOSE "Display additional information while building (e.g download progress, ...)" OFF)
|
| 9 | +option(RUN_NINJA_TEST "Run Ninja test suite" ON) |
9 | 10 | set(ARCHIVE_DOWNLOAD_DIR "${CMAKE_BINARY_DIR}" CACHE PATH "Directory where to download archives")
|
10 | 11 |
|
11 | 12 | include(NinjaUrls)
|
@@ -35,6 +36,7 @@ message(STATUS "*********************************************")
|
35 | 36 | message(STATUS "Ninja Python Distribution")
|
36 | 37 | message(STATUS "")
|
37 | 38 | message(STATUS " BUILD_VERBOSE : ${BUILD_VERBOSE}")
|
| 39 | +message(STATUS " RUN_NINJA_TEST : ${RUN_NINJA_TEST}") |
38 | 40 | message(STATUS "")
|
39 | 41 | message(STATUS " ARCHIVE_DOWNLOAD_DIR : ${ARCHIVE_DOWNLOAD_DIR}")
|
40 | 42 | message(STATUS "")
|
@@ -80,75 +82,64 @@ endif()
|
80 | 82 | #-----------------------------------------------------------------------------
|
81 | 83 | # Build from source
|
82 | 84 | #-----------------------------------------------------------------------------
|
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") |
143 | 122 |
|
144 | 123 | find_program(STRIP_EXECUTABLE strip)
|
145 | 124 | 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" |
147 | 128 | 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 |
150 | 141 | )
|
151 |
| - add_dependencies(strip_ninja_executable build_ninja) |
| 142 | + set(NINJA_BUILD_LAST_STEP "run_ninja_test_suite") |
152 | 143 | endif()
|
153 | 144 |
|
154 | 145 | install(FILES ${Ninja_SOURCE_DIR}/misc/ninja_syntax.py DESTINATION src/ninja)
|
|
0 commit comments