73 lines
3.5 KiB
CMake
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()
|