#! /usr/bin/env bash # Note: shouldn't be executed directly, src_dir must be set. # Common mt.exe driver that expects the SDKBIN variable to be set for the # specific MSVC version/configuration. source "$src_dir/msvc-common/msvc-common" # Translate absolute paths from POSIX to Windows. Use bash array to store # arguments in case they contain spaces. This needs to be done for both # certain option values and arguments. # # Note that we assume mt.exe options start with '-' and are case-sensitive. # args=() while [ $# -gt 0 ]; do case $1 in # @@ TODO: handle for [;[#]] # # -rgs: # -tlb: # -dll: # -replacements: # -managedassemblyname: # -out: # -inputresource:[;[#]] # -outputresource:[;[#]] # -updateresource:[;[#]] # -hashupdate[:] # -validate_file_hashes: -rgs:* | \ -tlb:* | \ -dll:* | \ -out:*) args=("${args[@]}" "$(split_translate 5 $1)") shift ;; -hashupdate:*) args=("${args[@]}" "$(split_translate 12 $1)") shift ;; -replacements:*) args=("${args[@]}" "$(split_translate 14 $1)") shift ;; -inputresource:*) args=("${args[@]}" "$(split_translate 15 $1)") shift ;; -outputresource:* | \ -updateresource:*) args=("${args[@]}" "$(split_translate 16 $1)") shift ;; -managedassemblyname:*) args=("${args[@]}" "$(split_translate 21 $1)") shift ;; -validate_file_hashes:*) args=("${args[@]}" "$(split_translate 22 $1)") shift ;; # Handle other options with separate values. This makes sure we don't try # to path-translate them. # # None. # Handle other options with combined values that could possibly be # interpreted as paths. # -identity:*) args=("${args[@]}" "$1") shift ;; # Option or argument. # *) # If starts with a slash, treat it as a path (options start with dash). # if [[ "$1" == /* ]]; then args=("${args[@]}" "$(translate $1)") else args=("${args[@]}" "$1") fi shift ;; esac done # mt.exe always sends diagnostics to stdout. # msvc_exec 1 "$SDKBIN\\mt.exe" "${args[@]}"