You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.4 KiB
34 lines
1.4 KiB
2 years ago
|
set(_GenerateNinjaMakefiles_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||
|
function(generate_ninja_makefiles srcdir)
|
||
|
# Recurse into subdirectories.
|
||
|
get_property(dirs DIRECTORY ${srcdir} PROPERTY SUBDIRECTORIES)
|
||
|
foreach(d IN LISTS dirs)
|
||
|
generate_ninja_makefiles(${d})
|
||
|
endforeach()
|
||
|
|
||
|
# Get the targets from this directory.
|
||
|
get_property(targets DIRECTORY ${srcdir} PROPERTY BUILDSYSTEM_TARGETS)
|
||
|
|
||
|
# Accumulate a global list of all targets.
|
||
|
set_property(GLOBAL APPEND PROPERTY _GenerateNinjaMakefiles_TARGETS ${targets})
|
||
|
|
||
|
# Compute paths to/from this directory and the top.
|
||
|
get_property(bindir DIRECTORY ${srcdir} PROPERTY BINARY_DIR)
|
||
|
if("${bindir}" STREQUAL "${CMAKE_BINARY_DIR}")
|
||
|
set(topdir ".")
|
||
|
set(subdir ".")
|
||
|
# The top level provides all targets.
|
||
|
get_property(targets GLOBAL PROPERTY _GenerateNinjaMakefiles_TARGETS)
|
||
|
else()
|
||
|
file(RELATIVE_PATH subdir ${CMAKE_BINARY_DIR} ${bindir})
|
||
|
string(REGEX REPLACE "[^/]+" ".." topdir "${subdir}")
|
||
|
endif()
|
||
|
|
||
|
# Write the Makefile for this directory.
|
||
|
string(REPLACE ";" " " NINJA_MAKEFILE_TARGETS "${targets}")
|
||
|
file(TO_NATIVE_PATH "${topdir}" NINJA_MAKEFILE_TOPDIR)
|
||
|
file(TO_NATIVE_PATH "${subdir}" NINJA_MAKEFILE_SUBDIR)
|
||
|
file(TO_NATIVE_PATH "${_GenerateNinjaMakefiles_DIR}/NinjaMakefileCommon.make" NINJA_MAKEFILE_COMMON)
|
||
|
configure_file(${_GenerateNinjaMakefiles_DIR}/NinjaMakefile.in ${bindir}/Makefile)
|
||
|
endfunction()
|