| author | |
| committer | |
| log | e08a4ea62d9814e6c0125ff467f67626f3a22e4f |
| tree | a06765f47bee6d18c1f9c85dbf0c1f0710651870 |
| parent | 7e65fe7ac36076d0d34a530afd63a68d2eac3486 |
| parent | 2c35e24bd95fa8ad9af1c6a712293163232a8b3c |
9 files changed, 47 insertions(+), 17 deletions(-)
CMakeLists.txt+12| ... | @@ -570,6 +570,14 @@ set(ZIG_C_HEADER_FILES | ... | @@ -570,6 +570,14 @@ set(ZIG_C_HEADER_FILES |
| 570 | "xtestintrin.h" | 570 | "xtestintrin.h" |
| 571 | ) | 571 | ) |
| 572 | 572 | ||
| 573 | if(MSVC) | ||
| 574 | set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK") | ||
| 575 | if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR}) | ||
| 576 | set(ZIG_DIA_GUIDS_LIB "${MSVC_DIA_SDK_DIR}/lib/amd64/diaguids.lib") | ||
| 577 | string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_DIA_GUIDS_LIB_ESCAPED "${ZIG_DIA_GUIDS_LIB}") | ||
| 578 | endif() | ||
| 579 | endif() | ||
| 580 | |||
| 573 | set(ZIG_LIB_DIR "lib/zig") | 581 | set(ZIG_LIB_DIR "lib/zig") |
| 574 | set(C_HEADERS_DEST "${ZIG_LIB_DIR}/include") | 582 | set(C_HEADERS_DEST "${ZIG_LIB_DIR}/include") |
| 575 | set(ZIG_STD_DEST "${ZIG_LIB_DIR}/std") | 583 | set(ZIG_STD_DEST "${ZIG_LIB_DIR}/std") |
| ... | @@ -631,6 +639,10 @@ target_link_libraries(zig LINK_PUBLIC | ... | @@ -631,6 +639,10 @@ target_link_libraries(zig LINK_PUBLIC |
| 631 | ${LLVM_LIBRARIES} | 639 | ${LLVM_LIBRARIES} |
| 632 | ${CMAKE_THREAD_LIBS_INIT} | 640 | ${CMAKE_THREAD_LIBS_INIT} |
| 633 | ) | 641 | ) |
| 642 | if(ZIG_DIA_GUIDS_LIB) | ||
| 643 | target_link_libraries(zig LINK_PUBLIC ${ZIG_DIA_GUIDS_LIB}) | ||
| 644 | endif() | ||
| 645 | |||
| 634 | if(MSVC OR MINGW) | 646 | if(MSVC OR MINGW) |
| 635 | target_link_libraries(zig LINK_PUBLIC version) | 647 | target_link_libraries(zig LINK_PUBLIC version) |
| 636 | endif() | 648 | endif() |
build.zig+12-1| ... | @@ -45,6 +45,7 @@ pub fn build(b: &Builder) { | ... | @@ -45,6 +45,7 @@ pub fn build(b: &Builder) { |
| 45 | const lld_libraries = nextValue(&index, build_info); | 45 | const lld_libraries = nextValue(&index, build_info); |
| 46 | const std_files = nextValue(&index, build_info); | 46 | const std_files = nextValue(&index, build_info); |
| 47 | const c_header_files = nextValue(&index, build_info); | 47 | const c_header_files = nextValue(&index, build_info); |
| 48 | const dia_guids_lib = nextValue(&index, build_info); | ||
| 48 | 49 | ||
| 49 | const llvm = findLLVM(b, llvm_config_exe); | 50 | const llvm = findLLVM(b, llvm_config_exe); |
| 50 | 51 | ||
| ... | @@ -76,11 +77,21 @@ pub fn build(b: &Builder) { | ... | @@ -76,11 +77,21 @@ pub fn build(b: &Builder) { |
| 76 | exe.linkSystemLibrary("c++"); | 77 | exe.linkSystemLibrary("c++"); |
| 77 | } | 78 | } |
| 78 | 79 | ||
| 80 | if (dia_guids_lib.len != 0) { | ||
| 81 | exe.addObjectFile(dia_guids_lib); | ||
| 82 | } | ||
| 83 | |||
| 79 | exe.linkSystemLibrary("c"); | 84 | exe.linkSystemLibrary("c"); |
| 80 | 85 | ||
| 81 | b.default_step.dependOn(&exe.step); | 86 | b.default_step.dependOn(&exe.step); |
| 82 | b.default_step.dependOn(docs_step); | 87 | b.default_step.dependOn(docs_step); |
| 83 | test_step.dependOn(&exe.step); | 88 | |
| 89 | const skip_self_hosted = b.option(bool, "skip-self-hosted", "Main test suite skips building self hosted compiler") ?? false; | ||
| 90 | if (!skip_self_hosted) { | ||
| 91 | test_step.dependOn(&exe.step); | ||
| 92 | } | ||
| 93 | const verbose_link_exe = b.option(bool, "verbose-link", "Print link command for self hosted compiler") ?? false; | ||
| 94 | exe.setVerboseLink(verbose_link_exe); | ||
| 84 | 95 | ||
| 85 | b.installArtifact(exe); | 96 | b.installArtifact(exe); |
| 86 | installStdLib(b, std_files); | 97 | installStdLib(b, std_files); |
ci/appveyor/appveyor.yml+1-1| ... | @@ -6,4 +6,4 @@ build_script: | ... | @@ -6,4 +6,4 @@ build_script: |
| 6 | after_build: | 6 | after_build: |
| 7 | - '%APPVEYOR_BUILD_FOLDER%\ci\appveyor\after_build.bat' | 7 | - '%APPVEYOR_BUILD_FOLDER%\ci\appveyor\after_build.bat' |
| 8 | cache: | 8 | cache: |
| 9 | - 'llvm+clang-5.0.0-win64-msvc-release.tar.xz' | 9 | - 'llvm+clang-5.0.1-win64-msvc-release.tar.xz' |
ci/appveyor/build_script.bat+6-3| ... | @@ -7,20 +7,23 @@ SET "PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%" | ... | @@ -7,20 +7,23 @@ SET "PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%" |
| 7 | SET "MSYSTEM=MINGW64" | 7 | SET "MSYSTEM=MINGW64" |
| 8 | SET "APPVEYOR_CACHE_ENTRY_ZIP_ARGS=-m0=Copy" | 8 | SET "APPVEYOR_CACHE_ENTRY_ZIP_ARGS=-m0=Copy" |
| 9 | 9 | ||
| 10 | bash -lc "cd ${APPVEYOR_BUILD_FOLDER} && if [ -s ""llvm+clang-5.0.0-win64-msvc-release.tar.xz"" ]; then echo 'skipping LLVM download'; else wget 'https://s3.amazonaws.com/superjoe/temp/llvm%%2bclang-5.0.0-win64-msvc-release.tar.xz'; fi && tar xf llvm+clang-5.0.0-win64-msvc-release.tar.xz" || exit /b | 10 | bash -lc "cd ${APPVEYOR_BUILD_FOLDER} && if [ -s ""llvm+clang-5.0.1-win64-msvc-release.tar.xz"" ]; then echo 'skipping LLVM download'; else wget 'https://s3.amazonaws.com/ziglang.org/deps/llvm%%2bclang-5.0.1-win64-msvc-release.tar.xz'; fi && tar xf llvm+clang-5.0.1-win64-msvc-release.tar.xz" || exit /b |
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | SET "PATH=%PREVPATH%" | 13 | SET "PATH=%PREVPATH%" |
| 14 | SET "MSYSTEM=%PREVMSYSTEM%" | 14 | SET "MSYSTEM=%PREVMSYSTEM%" |
| 15 | SET "ZIGBUILDDIR=%APPVEYOR_BUILD_FOLDER%\build-msvc-release" | 15 | SET "ZIGBUILDDIR=%APPVEYOR_BUILD_FOLDER%\build-msvc-release" |
| 16 | SET "ZIGPREFIXPATH=%APPVEYOR_BUILD_FOLDER%\llvm+clang-5.0.0-win64-msvc-release" | 16 | SET "ZIGPREFIXPATH=%APPVEYOR_BUILD_FOLDER%\llvm+clang-5.0.1-win64-msvc-release" |
| 17 | |||
| 18 | call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 | ||
| 19 | call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 | ||
| 17 | 20 | ||
| 18 | mkdir %ZIGBUILDDIR% | 21 | mkdir %ZIGBUILDDIR% |
| 19 | cd %ZIGBUILDDIR% | 22 | cd %ZIGBUILDDIR% |
| 20 | cmake.exe .. -Thost=x64 -G"Visual Studio 14 2015 Win64" "-DCMAKE_INSTALL_PREFIX=%ZIGBUILDDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release "-DZIG_LIBC_INCLUDE_DIR=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" "-DZIG_LIBC_LIB_DIR=C:\Program Files (x86)\Windows Kits\10\bin\x64\ucrt" "-DZIG_LIBC_STATIC_LIB_DIR=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64" || exit /b | 23 | cmake.exe .. -Thost=x64 -G"Visual Studio 14 2015 Win64" "-DCMAKE_INSTALL_PREFIX=%ZIGBUILDDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release "-DZIG_LIBC_INCLUDE_DIR=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" "-DZIG_LIBC_LIB_DIR=C:\Program Files (x86)\Windows Kits\10\bin\x64\ucrt" "-DZIG_LIBC_STATIC_LIB_DIR=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64" || exit /b |
| 21 | msbuild /p:Configuration=Release INSTALL.vcxproj || exit /b | 24 | msbuild /p:Configuration=Release INSTALL.vcxproj || exit /b |
| 22 | 25 | ||
| 23 | bin\zig.exe build --build-file ..\build.zig test || exit /b | 26 | bin\zig.exe build --build-file ..\build.zig test -Dverbose-link || exit /b |
| 24 | 27 | ||
| 25 | @echo "MSVC build succeeded, proceeding with MinGW build" | 28 | @echo "MSVC build succeeded, proceeding with MinGW build" |
| 26 | cd %APPVEYOR_BUILD_FOLDER% | 29 | cd %APPVEYOR_BUILD_FOLDER% |
src/config.h.in+1| ... | @@ -32,5 +32,6 @@ | ... | @@ -32,5 +32,6 @@ |
| 32 | #define ZIG_LLVM_CONFIG_EXE "@LLVM_CONFIG_EXE@" | 32 | #define ZIG_LLVM_CONFIG_EXE "@LLVM_CONFIG_EXE@" |
| 33 | #define ZIG_STD_FILES "@ZIG_STD_FILES@" | 33 | #define ZIG_STD_FILES "@ZIG_STD_FILES@" |
| 34 | #define ZIG_C_HEADER_FILES "@ZIG_C_HEADER_FILES@" | 34 | #define ZIG_C_HEADER_FILES "@ZIG_C_HEADER_FILES@" |
| 35 | #define ZIG_DIA_GUIDS_LIB "@ZIG_DIA_GUIDS_LIB_ESCAPED@" | ||
| 35 | 36 | ||
| 36 | #endif | 37 | #endif |
src/main.cpp+3-2| ... | @@ -267,14 +267,15 @@ static void add_package(CodeGen *g, CliPkg *cli_pkg, PackageTableEntry *pkg) { | ... | @@ -267,14 +267,15 @@ static void add_package(CodeGen *g, CliPkg *cli_pkg, PackageTableEntry *pkg) { |
| 267 | 267 | ||
| 268 | int main(int argc, char **argv) { | 268 | int main(int argc, char **argv) { |
| 269 | if (argc == 2 && strcmp(argv[1], "BUILD_INFO") == 0) { | 269 | if (argc == 2 && strcmp(argv[1], "BUILD_INFO") == 0) { |
| 270 | printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n", | 270 | printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", |
| 271 | ZIG_CMAKE_BINARY_DIR, | 271 | ZIG_CMAKE_BINARY_DIR, |
| 272 | ZIG_CXX_COMPILER, | 272 | ZIG_CXX_COMPILER, |
| 273 | ZIG_LLVM_CONFIG_EXE, | 273 | ZIG_LLVM_CONFIG_EXE, |
| 274 | ZIG_LLD_INCLUDE_PATH, | 274 | ZIG_LLD_INCLUDE_PATH, |
| 275 | ZIG_LLD_LIBRARIES, | 275 | ZIG_LLD_LIBRARIES, |
| 276 | ZIG_STD_FILES, | 276 | ZIG_STD_FILES, |
| 277 | ZIG_C_HEADER_FILES); | 277 | ZIG_C_HEADER_FILES, |
| 278 | ZIG_DIA_GUIDS_LIB); | ||
| 278 | return 0; | 279 | return 0; |
| 279 | } | 280 | } |
| 280 | 281 |
src/os.cpp+5| ... | @@ -1055,6 +1055,11 @@ int os_find_windows_sdk(ZigWindowsSDK **out_sdk) { | ... | @@ -1055,6 +1055,11 @@ int os_find_windows_sdk(ZigWindowsSDK **out_sdk) { |
| 1055 | if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { | 1055 | if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { |
| 1056 | int c0 = 0, c1 = 0, c2 = 0, c3 = 0; | 1056 | int c0 = 0, c1 = 0, c2 = 0, c3 = 0; |
| 1057 | sscanf(ffd.cFileName, "%d.%d.%d.%d", &c0, &c1, &c2, &c3); | 1057 | sscanf(ffd.cFileName, "%d.%d.%d.%d", &c0, &c1, &c2, &c3); |
| 1058 | if (c0 == 10 && c1 == 0 && c2 == 10240 && c3 == 0) { | ||
| 1059 | // Microsoft released 26624 as 10240 accidentally. | ||
| 1060 | // https://developer.microsoft.com/en-us/windows/downloads/sdk-archive | ||
| 1061 | c2 = 26624; | ||
| 1062 | } | ||
| 1058 | if ((c0 > v0) || (c1 > v1) || (c2 > v2) || (c3 > v3)) { | 1063 | if ((c0 > v0) || (c1 > v1) || (c2 > v2) || (c3 > v3)) { |
| 1059 | v0 = c0, v1 = c1, v2 = c2, v3 = c3; | 1064 | v0 = c0, v1 = c1, v2 = c2, v3 = c3; |
| 1060 | buf_init_from_str(&result_sdk->version10, ffd.cFileName); | 1065 | buf_init_from_str(&result_sdk->version10, ffd.cFileName); |
std/build.zig+6-9| ... | @@ -842,10 +842,10 @@ pub const LibExeObjStep = struct { | ... | @@ -842,10 +842,10 @@ pub const LibExeObjStep = struct { |
| 842 | lib_paths: ArrayList([]const u8), | 842 | lib_paths: ArrayList([]const u8), |
| 843 | disable_libc: bool, | 843 | disable_libc: bool, |
| 844 | frameworks: BufSet, | 844 | frameworks: BufSet, |
| 845 | verbose_link: bool, | ||
| 845 | 846 | ||
| 846 | // zig only stuff | 847 | // zig only stuff |
| 847 | root_src: ?[]const u8, | 848 | root_src: ?[]const u8, |
| 848 | verbose: bool, | ||
| 849 | output_h_path: ?[]const u8, | 849 | output_h_path: ?[]const u8, |
| 850 | out_h_filename: []const u8, | 850 | out_h_filename: []const u8, |
| 851 | assembly_files: ArrayList([]const u8), | 851 | assembly_files: ArrayList([]const u8), |
| ... | @@ -923,7 +923,7 @@ pub const LibExeObjStep = struct { | ... | @@ -923,7 +923,7 @@ pub const LibExeObjStep = struct { |
| 923 | var self = LibExeObjStep { | 923 | var self = LibExeObjStep { |
| 924 | .strip = false, | 924 | .strip = false, |
| 925 | .builder = builder, | 925 | .builder = builder, |
| 926 | .verbose = false, | 926 | .verbose_link = false, |
| 927 | .build_mode = builtin.Mode.Debug, | 927 | .build_mode = builtin.Mode.Debug, |
| 928 | .static = static, | 928 | .static = static, |
| 929 | .kind = kind, | 929 | .kind = kind, |
| ... | @@ -988,7 +988,7 @@ pub const LibExeObjStep = struct { | ... | @@ -988,7 +988,7 @@ pub const LibExeObjStep = struct { |
| 988 | .linker_script = null, | 988 | .linker_script = null, |
| 989 | 989 | ||
| 990 | .root_src = undefined, | 990 | .root_src = undefined, |
| 991 | .verbose = undefined, | 991 | .verbose_link = false, |
| 992 | .output_h_path = undefined, | 992 | .output_h_path = undefined, |
| 993 | .out_h_filename = undefined, | 993 | .out_h_filename = undefined, |
| 994 | .assembly_files = undefined, | 994 | .assembly_files = undefined, |
| ... | @@ -1087,8 +1087,8 @@ pub const LibExeObjStep = struct { | ... | @@ -1087,8 +1087,8 @@ pub const LibExeObjStep = struct { |
| 1087 | %%self.source_files.append(file); | 1087 | %%self.source_files.append(file); |
| 1088 | } | 1088 | } |
| 1089 | 1089 | ||
| 1090 | pub fn setVerbose(self: &LibExeObjStep, value: bool) { | 1090 | pub fn setVerboseLink(self: &LibExeObjStep, value: bool) { |
| 1091 | self.verbose = value; | 1091 | self.verbose_link = value; |
| 1092 | } | 1092 | } |
| 1093 | 1093 | ||
| 1094 | pub fn setBuildMode(self: &LibExeObjStep, mode: builtin.Mode) { | 1094 | pub fn setBuildMode(self: &LibExeObjStep, mode: builtin.Mode) { |
| ... | @@ -1223,15 +1223,12 @@ pub const LibExeObjStep = struct { | ... | @@ -1223,15 +1223,12 @@ pub const LibExeObjStep = struct { |
| 1223 | %%zig_args.append(builder.pathFromRoot(asm_file)); | 1223 | %%zig_args.append(builder.pathFromRoot(asm_file)); |
| 1224 | } | 1224 | } |
| 1225 | 1225 | ||
| 1226 | if (self.verbose) { | ||
| 1227 | %%zig_args.append("--verbose"); | ||
| 1228 | } | ||
| 1229 | if (builder.verbose_tokenize) %%zig_args.append("--verbose-tokenize"); | 1226 | if (builder.verbose_tokenize) %%zig_args.append("--verbose-tokenize"); |
| 1230 | if (builder.verbose_ast) %%zig_args.append("--verbose-ast"); | 1227 | if (builder.verbose_ast) %%zig_args.append("--verbose-ast"); |
| 1231 | if (builder.verbose_cimport) %%zig_args.append("--verbose-cimport"); | 1228 | if (builder.verbose_cimport) %%zig_args.append("--verbose-cimport"); |
| 1232 | if (builder.verbose_ir) %%zig_args.append("--verbose-ir"); | 1229 | if (builder.verbose_ir) %%zig_args.append("--verbose-ir"); |
| 1233 | if (builder.verbose_llvm_ir) %%zig_args.append("--verbose-llvm-ir"); | 1230 | if (builder.verbose_llvm_ir) %%zig_args.append("--verbose-llvm-ir"); |
| 1234 | if (builder.verbose_link) %%zig_args.append("--verbose-link"); | 1231 | if (builder.verbose_link or self.verbose_link) %%zig_args.append("--verbose-link"); |
| 1235 | 1232 | ||
| 1236 | if (self.strip) { | 1233 | if (self.strip) { |
| 1237 | %%zig_args.append("--strip"); | 1234 | %%zig_args.append("--strip"); |
std/special/build_runner.zig+1-1| ... | @@ -14,7 +14,7 @@ pub fn main() -> %void { | ... | @@ -14,7 +14,7 @@ pub fn main() -> %void { |
| 14 | var arg_it = os.args(); | 14 | var arg_it = os.args(); |
| 15 | 15 | ||
| 16 | // TODO use a more general purpose allocator here | 16 | // TODO use a more general purpose allocator here |
| 17 | var inc_allocator = %%std.heap.IncrementingAllocator.init(30 * 1024 * 1024); | 17 | var inc_allocator = %%std.heap.IncrementingAllocator.init(40 * 1024 * 1024); |
| 18 | defer inc_allocator.deinit(); | 18 | defer inc_allocator.deinit(); |
| 19 | 19 | ||
| 20 | const allocator = &inc_allocator.allocator; | 20 | const allocator = &inc_allocator.allocator; |