Windows: Add support for unicode command lines
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 6 Oct 2013 20:25:49 +0000 (20:25 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 6 Oct 2013 20:25:49 +0000 (20:25 +0000)
commit5a1a1856a4dfa1335d937437fade5c0bbab06560
tree2c960a1ef54fb65e6378aea04dca83e09267f1f2
parent2def17935c87f5e6b23d899567ef3dd00ed89d48
Windows: Add support for unicode command lines

Summary:
The MSVCRT deliberately sends main() code-page specific characters.
This isn't too useful to LLVM as we end up converting the arguments to
UTF-16 and subsequently attempt to use the result as, for example, a
file name.  Instead, we need to have the ability to access the Unicode
command line and transform it to UTF-8.

This has the distinct advantage over using the MSVC-specific wmain()
function as our entry point because:
 - It doesn't work on cygwin.
 - It only work on MinGW with caveats and only then on certain versions.
 - We get to keep our entry point as main(). :)

N.B.  This patch includes fixes to other parts of lib/Support/Windows
s.t. we would be able to take advantage of getting the Unicode paths.
E.G.  clang spawning clang -cc1 would want to give it Unicode arguments.

Reviewers: aaron.ballman, Bigcheese, rnk, ruiu

Reviewed By: rnk

CC: llvm-commits, ygao
Differential Revision: http://llvm-reviews.chandlerc.com/D1834

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192069 91177308-0d34-0410-b5e6-96231b3b80d8
18 files changed:
autoconf/configure.ac
cmake/config-ix.cmake
cmake/modules/LLVM-Config.cmake
cmake/modules/TableGen.cmake
include/llvm/Config/config.h.cmake
include/llvm/Config/config.h.in
include/llvm/Support/Process.h
lib/Support/Unix/Process.inc
lib/Support/Windows/DynamicLibrary.inc
lib/Support/Windows/Path.inc
lib/Support/Windows/Process.inc
lib/Support/Windows/Program.inc
lib/Support/Windows/Signals.inc
lib/Support/Windows/Windows.h
projects/sample/autoconf/configure.ac
utils/FileCheck/CMakeLists.txt
utils/FileUpdate/CMakeLists.txt
utils/not/CMakeLists.txt