zig

fork of https://codeberg.org/ziglang/zig
Log | Tree | Refs | README | LICENSE

commit 41b588547cd49673ff632ed0fc3210c76ff48b42 (tree)
parent 7fd164f196e5867594498d3600e5da1273ad5b6f
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Sat, 23 Sep 2017 18:46:03 -0400

improvements to windows support

See #302

Diffstat:
MCMakeLists.txt | 7++++++-
Mcmake/Findllvm.cmake | 55+++++++++++++++++++++++++++++++++++++------------------
Msrc/analyze.cpp | 4++++
Msrc/os.hpp | 2+-
4 files changed, 48 insertions(+), 20 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -352,9 +352,14 @@ else() endif() set(EXE_LDFLAGS " ") +if(MINGW) + set(EXE_LDFLAGS "-static -static-libgcc -static-libstdc++") +else() + set(EXE_LDFLAGS " ") +endif() if(ZIG_TEST_COVERAGE) set(EXE_CFLAGS "${EXE_CFLAGS} -fprofile-arcs -ftest-coverage") - set(EXE_LDFLAGS "-fprofile-arcs -ftest-coverage") + set(EXE_LDFLAGS "${EXE_LDFLAGS} -fprofile-arcs -ftest-coverage") endif() add_executable(zig ${ZIG_SOURCES}) diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake @@ -80,32 +80,51 @@ else() "c:/msys64/mingw64/bin" "C:/Libraries/llvm-5.0.0/bin") - execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libs - OUTPUT_VARIABLE LLVM_LIBRARIES - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process( - COMMAND ${LLVM_CONFIG_EXE} --system-libs - OUTPUT_VARIABLE LLVM_SYSTEM_LIBS - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libdir - OUTPUT_VARIABLE LLVM_LIBDIRS - OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug")) + execute_process( + COMMAND ${LLVM_CONFIG_EXE} --libfiles --link-static + OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}") + + execute_process( + COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static + OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}") + + execute_process( + COMMAND ${LLVM_CONFIG_EXE} --libdir --link-static + OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") + endif() + if(NOT LLVM_LIBRARIES) + execute_process( + COMMAND ${LLVM_CONFIG_EXE} --libs + OUTPUT_VARIABLE LLVM_LIBRARIES + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process( + COMMAND ${LLVM_CONFIG_EXE} --system-libs + OUTPUT_VARIABLE LLVM_SYSTEM_LIBS + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process( + COMMAND ${LLVM_CONFIG_EXE} --libdir + OUTPUT_VARIABLE LLVM_LIBDIRS + OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() execute_process( COMMAND ${LLVM_CONFIG_EXE} --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIRS OUTPUT_STRIP_TRAILING_WHITESPACE) - find_library(LLVM_LIBRARY NAMES LLVM) - set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) - if(LLVM_LIBRARY AND NOT LLVM_LIBRARIES) - set(LLVM_LIBRARIES ${LLVM_LIBRARY}) + if(NOT LLVM_LIBRARIES) + find_library(LLVM_LIBRARIES NAMES LLVM LLVM-5.0 LLVM-5) endif() link_directories("${CMAKE_PREFIX_PATH}/lib") diff --git a/src/analyze.cpp b/src/analyze.cpp @@ -3189,6 +3189,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a if (is_pub) { if (buf_eql_str(proto_name, "main")) { g->have_pub_main = true; + g->windows_subsystem_windows = false; + g->windows_subsystem_console = true; } else if (buf_eql_str(proto_name, "panic")) { g->have_pub_panic = true; } @@ -3196,6 +3198,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a g->libc_link_lib != nullptr) { g->have_c_main = true; + g->windows_subsystem_windows = false; + g->windows_subsystem_console = true; } } diff --git a/src/os.hpp b/src/os.hpp @@ -81,7 +81,7 @@ bool os_is_sep(uint8_t c); #endif #if defined(ZIG_OS_WINDOWS) -#define ZIG_PRI_usize "Iu" +#define ZIG_PRI_usize "I64u" #define ZIG_PRI_u64 "I64u" #define ZIG_PRI_llu "I64u" #define ZIG_PRI_x64 "I64x"