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()
352352endif()
353353
354354set(EXE_LDFLAGS " ")
355if(MINGW)
356 set(EXE_LDFLAGS "-static -static-libgcc -static-libstdc++")
357else()
358 set(EXE_LDFLAGS " ")
359endif()
355360if(ZIG_TEST_COVERAGE)
356361 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")
358363endif()
359364
360365add_executable(zig ${ZIG_SOURCES})
cmake/Findllvm.cmake+37-18
......@@ -80,32 +80,51 @@ else()
8080 "c:/msys64/mingw64/bin"
8181 "C:/Libraries/llvm-5.0.0/bin")
8282
83 execute_process(
84 COMMAND ${LLVM_CONFIG_EXE} --libs
85 OUTPUT_VARIABLE LLVM_LIBRARIES
86 OUTPUT_STRIP_TRAILING_WHITESPACE)
87
88 execute_process(
89 COMMAND ${LLVM_CONFIG_EXE} --system-libs
90 OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
91 OUTPUT_STRIP_TRAILING_WHITESPACE)
92
93 execute_process(
94 COMMAND ${LLVM_CONFIG_EXE} --libdir
95 OUTPUT_VARIABLE LLVM_LIBDIRS
96 OUTPUT_STRIP_TRAILING_WHITESPACE)
83 if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug"))
84 execute_process(
85 COMMAND ${LLVM_CONFIG_EXE} --libfiles --link-static
86 OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES
87 OUTPUT_STRIP_TRAILING_WHITESPACE)
88 string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}")
89
90 execute_process(
91 COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static
92 OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
93 OUTPUT_STRIP_TRAILING_WHITESPACE)
94 string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
95
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
98119 execute_process(
99120 COMMAND ${LLVM_CONFIG_EXE} --includedir
100121 OUTPUT_VARIABLE LLVM_INCLUDE_DIRS
101122 OUTPUT_STRIP_TRAILING_WHITESPACE)
102123
103 find_library(LLVM_LIBRARY NAMES LLVM)
104
105124 set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
106125
107 if(LLVM_LIBRARY AND NOT LLVM_LIBRARIES)
108 set(LLVM_LIBRARIES ${LLVM_LIBRARY})
126 if(NOT LLVM_LIBRARIES)
127 find_library(LLVM_LIBRARIES NAMES LLVM LLVM-5.0 LLVM-5)
109128 endif()
110129
111130 link_directories("${CMAKE_PREFIX_PATH}/lib")
src/analyze.cpp+4
......@@ -3189,6 +3189,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a
31893189 if (is_pub) {
31903190 if (buf_eql_str(proto_name, "main")) {
31913191 g->have_pub_main = true;
3192 g->windows_subsystem_windows = false;
3193 g->windows_subsystem_console = true;
31923194 } else if (buf_eql_str(proto_name, "panic")) {
31933195 g->have_pub_panic = true;
31943196 }
......@@ -3196,6 +3198,8 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a
31963198 g->libc_link_lib != nullptr)
31973199 {
31983200 g->have_c_main = true;
3201 g->windows_subsystem_windows = false;
3202 g->windows_subsystem_console = true;
31993203 }
32003204
32013205 }
src/os.hpp+1-1
......@@ -81,7 +81,7 @@ bool os_is_sep(uint8_t c);
8181#endif
8282
8383#if defined(ZIG_OS_WINDOWS)
84#define ZIG_PRI_usize "Iu"
84#define ZIG_PRI_usize "I64u"
8585#define ZIG_PRI_u64 "I64u"
8686#define ZIG_PRI_llu "I64u"
8787#define ZIG_PRI_x64 "I64x"