Brad King f0cdb6001b Introduce "generator expression" syntax to custom commands ()
Evaluate in the COMMAND arguments of custom commands the generator
expression syntax introduced in commit d2e1f2b4 (Introduce "generator
expressions" to add_test, 2009-08-11).  These expressions have a syntax
like $<TARGET_FILE:mytarget> and are evaluated during build system
generation.  This syntax allows per-configuration target output files to
be referenced in custom command lines.
2010-12-15 14:53:48 -05:00

41 lines
1.2 KiB
CMake

# Print values for human reference.
foreach(v
configuration
perconfig_file_dir
perconfig_file_name
perconfig_file
pcStatic_file
pcStatic_linker_file
pcShared_file
pcShared_linker_file
pcShared_soname_file
)
message(STATUS "${v}=${${v}}")
endforeach()
# Verify that file names match as expected.
set(pc_file_components ${perconfig_file_dir}/${perconfig_file_name})
if(NOT "${pc_file_components}" STREQUAL "${perconfig_file}")
message(SEND_ERROR
"File components ${pc_file_components} do not match ${perconfig_file}")
endif()
if(NOT "${pcStatic_file}" STREQUAL "${pcStatic_linker_file}")
message(SEND_ERROR
"pcStatic_file does not match pcStatic_linker_file:\n"
" ${pcStatic_file}\n"
" ${pcStatic_linker_file}\n"
)
endif()
# Verify that the implementation files are named correctly.
foreach(lib pcStatic pcShared)
file(STRINGS "${${lib}_file}" info LIMIT_COUNT 1 REGEX "INFO:[^[]*\\[")
if(NOT "${info}" MATCHES ".*INFO:symbol\\[${lib}\\].*")
message(SEND_ERROR "No INFO:symbol[${lib}] found in:\n ${${lib}_file}")
endif()
endforeach()
execute_process(COMMAND ${perconfig_file} RESULT_VARIABLE result)
if(result)
message(SEND_ERROR "Error running:\n ${perconfig_file}\n(${result})")
endif()