authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-09-23 18:46:03-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-09-23 18:46:03-04:00
log41b588547cd49673ff632ed0fc3210c76ff48b42
treea1e44c3b10a1a004d95d9bc574dbfa985f488b39
parent7fd164f196e5867594498d3600e5da1273ad5b6f

improvements to windows support

See #302

4 files changed, 48 insertions(+), 20 deletions(-)

CMakeLists.txt+6-1
...@@ -352,9 +352,14 @@ else()...@@ -352,9 +352,14 @@ else()
352endif()352endif()
353353
354set(EXE_LDFLAGS " ")354set(EXE_LDFLAGS " ")
355if(MINGW)
356 set(EXE_LDFLAGS "-static -static-libgcc -static-libstdc++")
357else()
358 set(EXE_LDFLAGS " ")
359endif()
355if(ZIG_TEST_COVERAGE)360if(ZIG_TEST_COVERAGE)
356 set(EXE_CFLAGS "${EXE_CFLAGS} -fprofile-arcs -ftest-coverage")361 set(EXE_CFLAGS "${EXE_CFLAGS} -fprofile-arcs -ftest-coverage")
357 set(EXE_LDFLAGS "-fprofile-arcs -ftest-coverage")362 set(EXE_LDFLAGS "${EXE_LDFLAGS} -fprofile-arcs -ftest-coverage")
358endif()363endif()
359364
360add_executable(zig ${ZIG_SOURCES})365add_executable(zig ${ZIG_SOURCES})
cmake/Findllvm.cmake+37-18
...@@ -80,32 +80,51 @@ else()...@@ -80,32 +80,51 @@ else()
80 "c:/msys64/mingw64/bin"80 "c:/msys64/mingw64/bin"
81 "C:/Libraries/llvm-5.0.0/bin")81 "C:/Libraries/llvm-5.0.0/bin")
8282
83 execute_process(83 if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug"))
84 COMMAND ${LLVM_CONFIG_EXE} --libs84 execute_process(
85 OUTPUT_VARIABLE LLVM_LIBRARIES85 COMMAND ${LLVM_CONFIG_EXE} --libfiles --link-static
86 OUTPUT_STRIP_TRAILING_WHITESPACE)86 OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES
8787 OUTPUT_STRIP_TRAILING_WHITESPACE)
88 execute_process(88 string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}")
89 COMMAND ${LLVM_CONFIG_EXE} --system-libs89
90 OUTPUT_VARIABLE LLVM_SYSTEM_LIBS90 execute_process(
91 OUTPUT_STRIP_TRAILING_WHITESPACE)91 COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static
9292 OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
93 execute_process(93 OUTPUT_STRIP_TRAILING_WHITESPACE)
94 COMMAND ${LLVM_CONFIG_EXE} --libdir94 string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
95 OUTPUT_VARIABLE LLVM_LIBDIRS95
96 OUTPUT_STRIP_TRAILING_WHITESPACE)96 execute_process(
97 COMMAND ${LLVM_CONFIG_EXE} --libdir --link-static
98 OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES
99 OUTPUT_STRIP_TRAILING_WHITESPACE)
100 string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
101 endif()
102 if(NOT LLVM_LIBRARIES)
103 execute_process(
104 COMMAND ${LLVM_CONFIG_EXE} --libs
105 OUTPUT_VARIABLE LLVM_LIBRARIES
106 OUTPUT_STRIP_TRAILING_WHITESPACE)
107
108 execute_process(
109 COMMAND ${LLVM_CONFIG_EXE} --system-libs
110 OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
111 OUTPUT_STRIP_TRAILING_WHITESPACE)
112
113 execute_process(
114 COMMAND ${LLVM_CONFIG_EXE} --libdir
115 OUTPUT_VARIABLE LLVM_LIBDIRS
116 OUTPUT_STRIP_TRAILING_WHITESPACE)
117 endif()
97118
98 execute_process(119 execute_process(
99 COMMAND ${LLVM_CONFIG_EXE} --includedir120 COMMAND ${LLVM_CONFIG_EXE} --includedir
100 OUTPUT_VARIABLE LLVM_INCLUDE_DIRS121 OUTPUT_VARIABLE LLVM_INCLUDE_DIRS
101 OUTPUT_STRIP_TRAILING_WHITESPACE)122 OUTPUT_STRIP_TRAILING_WHITESPACE)
102123
103 find_library(LLVM_LIBRARY NAMES LLVM)
104
105 set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})124 set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
106125
107 if(LLVM_LIBRARY AND NOT LLVM_LIBRARIES)126 if(NOT LLVM_LIBRARIES)
108 set(LLVM_LIBRARIES ${LLVM_LIBRARY})127 find_library(LLVM_LIBRARIES NAMES LLVM LLVM-5.0 LLVM-5)
109 endif()128 endif()
110129
111 link_directories("${CMAKE_PREFIX_PATH}/lib")130 link_directories("${CMAKE_PREFIX_PATH}/lib")
src/analyze.cpp+4
...@@ -3189,6 +3189,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a...@@ -3189,6 +3189,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a
3189 if (is_pub) {3189 if (is_pub) {
3190 if (buf_eql_str(proto_name, "main")) {3190 if (buf_eql_str(proto_name, "main")) {
3191 g->have_pub_main = true;3191 g->have_pub_main = true;
3192 g->windows_subsystem_windows = false;
3193 g->windows_subsystem_console = true;
3192 } else if (buf_eql_str(proto_name, "panic")) {3194 } else if (buf_eql_str(proto_name, "panic")) {
3193 g->have_pub_panic = true;3195 g->have_pub_panic = true;
3194 }3196 }
...@@ -3196,6 +3198,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a...@@ -3196,6 +3198,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a
3196 g->libc_link_lib != nullptr)3198 g->libc_link_lib != nullptr)
3197 {3199 {
3198 g->have_c_main = true;3200 g->have_c_main = true;
3201 g->windows_subsystem_windows = false;
3202 g->windows_subsystem_console = true;
3199 }3203 }
32003204
3201 }3205 }
src/os.hpp+1-1
...@@ -81,7 +81,7 @@ bool os_is_sep(uint8_t c);...@@ -81,7 +81,7 @@ bool os_is_sep(uint8_t c);
81#endif81#endif
8282
83#if defined(ZIG_OS_WINDOWS)83#if defined(ZIG_OS_WINDOWS)
84#define ZIG_PRI_usize "Iu"84#define ZIG_PRI_usize "I64u"
85#define ZIG_PRI_u64 "I64u"85#define ZIG_PRI_u64 "I64u"
86#define ZIG_PRI_llu "I64u"86#define ZIG_PRI_llu "I64u"
87#define ZIG_PRI_x64 "I64x"87#define ZIG_PRI_x64 "I64x"