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.
33 lines
1.4 KiB
33 lines
1.4 KiB
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()
|
|
|