Files
build_driver/windows_driver/base/inf2cat.cmake
T
2026-07-07 15:39:46 +08:00

73 lines
3.5 KiB
CMake

include_guard(GLOBAL)
include(${CMAKE_CURRENT_LIST_DIR}/global.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/log.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/ver.cmake)
function(wdk_init_inf2cat_defaults DRIVER_TARGET)
wdk_require_target("wdk_init_inf2cat_defaults" "${DRIVER_TARGET}")
wdk_begin_target_state_init_once(_should_init "${DRIVER_TARGET}" inf2cat_defaults)
if(NOT _should_init)
return()
endif()
wdk_get_target_state(root "${DRIVER_TARGET}")
wdk_get_target_state(platform "${DRIVER_TARGET}")
wdk_get_target_state(output_dir "${DRIVER_TARGET}")
wdk_init_target_state("${DRIVER_TARGET}" package_dir "${output_dir}/package")
wdk_has_target_state(_has_inf2cat_exe "${DRIVER_TARGET}" inf2cat_exe)
if(NOT _has_inf2cat_exe)
find_exe_recursive(inf2cat_exe "${root}" "Inf2Cat.exe" "${platform}")
wdk_init_target_state("${DRIVER_TARGET}" inf2cat_exe "${inf2cat_exe}")
wdk_log_status("${DRIVER_TARGET}" "WDK_INF2CAT_EXE: ${inf2cat_exe}")
endif()
endfunction()
function(wdk_make_inf2cat_script_content OUT_VAR DRIVER_TARGET DRIVER_FILE INF_FILE PKG_DIR)
wdk_require_target("wdk_make_inf2cat_script_content" "${DRIVER_TARGET}")
wdk_init_inf2cat_defaults("${DRIVER_TARGET}")
wdk_get_target_state(inf2cat_exe "${DRIVER_TARGET}")
wdk_get_target_state(version_identifier "${DRIVER_TARGET}")
wdk_require_non_empty("wdk_make_inf2cat_script_content" "WDK_INF2CAT_EXE" "${inf2cat_exe}")
check_exist_fail_fast(inf2cat_exe)
get_filename_component(_driver_name "${DRIVER_FILE}" NAME)
get_filename_component(_inf_file_abs "${INF_FILE}" ABSOLUTE)
get_filename_component(_inf_name "${_inf_file_abs}" NAME)
wdk_make_cmd_script_content(_script_content
"\"${CMAKE_COMMAND}\" -E rm -rf \"${PKG_DIR}\""
"\"${CMAKE_COMMAND}\" -E make_directory \"${PKG_DIR}\""
"\"${CMAKE_COMMAND}\" -E copy_if_different \"${_inf_file_abs}\" \"${PKG_DIR}/${_inf_name}\""
"\"${CMAKE_COMMAND}\" -E copy_if_different \"${DRIVER_FILE}\" \"${PKG_DIR}/${_driver_name}\""
"\"${inf2cat_exe}\" \"/driver:${PKG_DIR}\" \"/os:${version_identifier}\""
)
set(${OUT_VAR} "${_script_content}" PARENT_SCOPE)
endfunction()
function(wdk_add_inf2cat_target DRIVER_TARGET INF2CAT_TARGET DRIVER_FILE INF_FILE)
wdk_require_target("wdk_add_inf2cat_target" "${DRIVER_TARGET}")
wdk_init_inf2cat_defaults("${DRIVER_TARGET}")
wdk_get_target_state(folder_name "${DRIVER_TARGET}")
if(TARGET "${INF2CAT_TARGET}")
wdk_fatal("${CMAKE_CURRENT_FUNCTION}" "wdk_add_inf2cat_target: target already exists: ${INF2CAT_TARGET}")
endif()
wdk_require_non_empty("wdk_add_inf2cat_target" "DRIVER_FILE" "${DRIVER_FILE}")
wdk_require_non_empty("wdk_add_inf2cat_target" "INF_FILE" "${INF_FILE}")
if(ARGN)
list(GET ARGN 0 package_dir)
else()
wdk_get_target_state(package_dir "${DRIVER_TARGET}")
endif()
wdk_get_target_state(script_dir "${DRIVER_TARGET}")
set(_script_file "${script_dir}/${INF2CAT_TARGET}_$<CONFIG>.bat")
wdk_make_inf2cat_script_content(_script_content "${DRIVER_TARGET}" "${DRIVER_FILE}" "${INF_FILE}" "${package_dir}")
wdk_add_generated_cmd_script_target(
"${INF2CAT_TARGET}"
"${_script_file}"
"${CMAKE_CURRENT_BINARY_DIR}"
"Packaging ${DRIVER_FILE} and generating catalog with Inf2Cat"
"${_script_content}"
)
wdk_set_target_state("${INF2CAT_TARGET}" folder_name "${folder_name}")
endfunction()