Files
Tyler YankeeandJoseph Snyder c355bd02e4 Ninja, Makefile: Add compile and link wrapper usage requirements
Introduce new properties which allow target-specific wrapping of
compile and link commands with arbitrary command lines. This is similar
to the existing compiler and linker launchers, except the new
`INTERFACE` compile and link wrappers allows expression as usage
requirements.

Wrappers are more flexible than launchers with regard to having
multiple belonging to a given target, either from the target itself or
dependent(s). In such cases, wrappers precede launchers on the
resulting command line (so as to not interfere with tools like
`ccache`), and are sorted lexicographically by the name of the
corresponding CMake global property containing their value.

Co-authored-by: Joseph Snyder <joseph.snyder@kitware.com>
Issue: #27402, #28110
Fixes: #27598
2026-09-30 07:51:22 -04:00

16 lines
793 B
CMake

include(common.cmake)
enable_language(C)
string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_C_CREATE_STATIC_LIBRARY}")
string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_C_CREATE_STATIC_LIBRARY}")
# Static libraries are created by the archiver: compile wrappers apply, but
# link wrappers and linker launchers do not.
set(CMAKE_C_LINKER_LAUNCHER "${CMAKE_COMMAND};-E;env;LL_LAUNCH=1")
add_library(main STATIC main.c)
set_target_properties(main PROPERTIES
COMPILE_WRAPPERS "EXAMPLE_1;EXAMPLE_2"
LINK_WRAPPERS "EXAMPLE_1;EXAMPLE_2"
)