Commit 1b120d1e49

Andrew Kelley <superjoe30@gmail.com>
2018-01-05 04:46:26
update windows build to llvm 5.0.1
llvm-config.exe does not handle diaguids.lib for us so we have to duplicate the work.
1 parent 21a5526
ci/appveyor/build_script.bat
@@ -7,13 +7,13 @@ SET "PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%"
 SET "MSYSTEM=MINGW64"
 SET "APPVEYOR_CACHE_ENTRY_ZIP_ARGS=-m0=Copy"
 
-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
+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
 
 
 SET "PATH=%PREVPATH%"
 SET "MSYSTEM=%PREVMSYSTEM%"
 SET "ZIGBUILDDIR=%APPVEYOR_BUILD_FOLDER%\build-msvc-release"
-SET "ZIGPREFIXPATH=%APPVEYOR_BUILD_FOLDER%\llvm+clang-5.0.0-win64-msvc-release"
+SET "ZIGPREFIXPATH=%APPVEYOR_BUILD_FOLDER%\llvm+clang-5.0.1-win64-msvc-release"
 
 mkdir %ZIGBUILDDIR%
 cd %ZIGBUILDDIR%
src/config.h.in
@@ -32,5 +32,6 @@
 #define ZIG_LLVM_CONFIG_EXE "@LLVM_CONFIG_EXE@"
 #define ZIG_STD_FILES "@ZIG_STD_FILES@"
 #define ZIG_C_HEADER_FILES "@ZIG_C_HEADER_FILES@"
+#define ZIG_DIA_GUIDS_LIB "@ZIG_DIA_GUIDS_LIB_ESCAPED@"
 
 #endif
src/main.cpp
@@ -267,14 +267,15 @@ static void add_package(CodeGen *g, CliPkg *cli_pkg, PackageTableEntry *pkg) {
 
 int main(int argc, char **argv) {
     if (argc == 2 && strcmp(argv[1], "BUILD_INFO") == 0) {
-        printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
+        printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
                 ZIG_CMAKE_BINARY_DIR,
                 ZIG_CXX_COMPILER,
                 ZIG_LLVM_CONFIG_EXE,
                 ZIG_LLD_INCLUDE_PATH,
                 ZIG_LLD_LIBRARIES,
                 ZIG_STD_FILES,
-                ZIG_C_HEADER_FILES);
+                ZIG_C_HEADER_FILES,
+                ZIG_DIA_GUIDS_LIB);
         return 0;
     }
 
build.zig
@@ -45,6 +45,7 @@ pub fn build(b: &Builder) {
     const lld_libraries = nextValue(&index, build_info);
     const std_files = nextValue(&index, build_info);
     const c_header_files = nextValue(&index, build_info);
+    const dia_guids_lib = nextValue(&index, build_info);
 
     const llvm = findLLVM(b, llvm_config_exe);
 
@@ -76,6 +77,10 @@ pub fn build(b: &Builder) {
         exe.linkSystemLibrary("c++");
     }
 
+    if (dia_guids_lib.len != 0) {
+        exe.addObjectFile(dia_guids_lib);
+    }
+
     exe.linkSystemLibrary("c");
 
     b.default_step.dependOn(&exe.step);
CMakeLists.txt
@@ -570,6 +570,14 @@ set(ZIG_C_HEADER_FILES
     "xtestintrin.h"
 )
 
+if(MSVC)
+    set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
+    if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
+        set(ZIG_DIA_GUIDS_LIB "${MSVC_DIA_SDK_DIR}/lib/amd64/diaguids.lib")
+        string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_DIA_GUIDS_LIB_ESCAPED "${ZIG_DIA_GUIDS_LIB}")
+    endif()
+endif()
+
 set(ZIG_LIB_DIR "lib/zig")
 set(C_HEADERS_DEST "${ZIG_LIB_DIR}/include")
 set(ZIG_STD_DEST "${ZIG_LIB_DIR}/std")
@@ -631,6 +639,10 @@ target_link_libraries(zig LINK_PUBLIC
     ${LLVM_LIBRARIES}
     ${CMAKE_THREAD_LIBS_INIT}
 )
+if(ZIG_DIA_GUIDS_LIB)
+    target_link_libraries(zig LINK_PUBLIC ${ZIG_DIA_GUIDS_LIB})
+endif()
+
 if(MSVC OR MINGW)
     target_link_libraries(zig LINK_PUBLIC version)
 endif()