| ... | @@ -91,6 +91,20 @@ pub fn build(b: *Builder) !void { | ... | @@ -91,6 +91,20 @@ pub fn build(b: *Builder) !void { |
| 91 | exe.addBuildOption(bool, "have_llvm", enable_llvm); | 91 | exe.addBuildOption(bool, "have_llvm", enable_llvm); |
| 92 | if (enable_llvm) { | 92 | if (enable_llvm) { |
| 93 | const cmake_cfg = if (static_llvm) null else findAndParseConfigH(b, config_h_path_option); | 93 | const cmake_cfg = if (static_llvm) null else findAndParseConfigH(b, config_h_path_option); |
| | 94 | |
| | 95 | const exe_cflags = [_][]const u8{ |
| | 96 | "-std=c++14", |
| | 97 | "-D__STDC_CONSTANT_MACROS", |
| | 98 | "-D__STDC_FORMAT_MACROS", |
| | 99 | "-D__STDC_LIMIT_MACROS", |
| | 100 | "-D_GNU_SOURCE", |
| | 101 | "-fvisibility-inlines-hidden", |
| | 102 | "-fno-exceptions", |
| | 103 | "-fno-rtti", |
| | 104 | "-Werror=type-limits", |
| | 105 | "-Wno-missing-braces", |
| | 106 | "-Wno-comment", |
| | 107 | }; |
| 94 | if (is_stage1) { | 108 | if (is_stage1) { |
| 95 | exe.addIncludeDir("src"); | 109 | exe.addIncludeDir("src"); |
| 96 | exe.addIncludeDir("deps/SoftFloat-3e/source/include"); | 110 | exe.addIncludeDir("deps/SoftFloat-3e/source/include"); |
| ... | @@ -109,28 +123,8 @@ pub fn build(b: *Builder) !void { | ... | @@ -109,28 +123,8 @@ pub fn build(b: *Builder) !void { |
| 109 | softfloat.addCSourceFiles(&softfloat_sources, &[_][]const u8{ "-std=c99", "-O3" }); | 123 | softfloat.addCSourceFiles(&softfloat_sources, &[_][]const u8{ "-std=c99", "-O3" }); |
| 110 | exe.linkLibrary(softfloat); | 124 | exe.linkLibrary(softfloat); |
| 111 | | 125 | |
| 112 | const exe_cflags = [_][]const u8{ | | |
| 113 | "-std=c++14", | | |
| 114 | "-D__STDC_CONSTANT_MACROS", | | |
| 115 | "-D__STDC_FORMAT_MACROS", | | |
| 116 | "-D__STDC_LIMIT_MACROS", | | |
| 117 | "-D_GNU_SOURCE", | | |
| 118 | "-fvisibility-inlines-hidden", | | |
| 119 | "-fno-exceptions", | | |
| 120 | "-fno-rtti", | | |
| 121 | "-Werror=type-limits", | | |
| 122 | "-Wno-missing-braces", | | |
| 123 | "-Wno-comment", | | |
| 124 | }; | | |
| 125 | exe.addCSourceFiles(&stage1_sources, &exe_cflags); | 126 | exe.addCSourceFiles(&stage1_sources, &exe_cflags); |
| 126 | exe.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" }); | 127 | exe.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" }); |
| 127 | if (cmake_cfg == null) { | | |
| 128 | // We need this because otherwise zig_clang_cc1_main.cpp ends up pulling | | |
| 129 | // in a dependency on llvm::cfg::Update<llvm::BasicBlock*>::dump() which is | | |
| 130 | // unavailable when LLVM is compiled in Release mode. | | |
| 131 | const zig_cpp_cflags = exe_cflags ++ [_][]const u8{"-DNDEBUG=1"}; | | |
| 132 | exe.addCSourceFiles(&zig_cpp_sources, &zig_cpp_cflags); | | |
| 133 | } | | |
| 134 | } | 128 | } |
| 135 | if (cmake_cfg) |cfg| { | 129 | if (cmake_cfg) |cfg| { |
| 136 | // Inside this code path, we have to coordinate with system packaged LLVM, Clang, and LLD. | 130 | // Inside this code path, we have to coordinate with system packaged LLVM, Clang, and LLD. |
| ... | @@ -193,6 +187,15 @@ pub fn build(b: *Builder) !void { | ... | @@ -193,6 +187,15 @@ pub fn build(b: *Builder) !void { |
| 193 | } | 187 | } |
| 194 | } else { | 188 | } else { |
| 195 | // Here we are -Denable-llvm but no cmake integration. | 189 | // Here we are -Denable-llvm but no cmake integration. |
| | 190 | |
| | 191 | // Adds the Zig C++ sources which both stage1 and stage2 need. |
| | 192 | // |
| | 193 | // We need this because otherwise zig_clang_cc1_main.cpp ends up pulling |
| | 194 | // in a dependency on llvm::cfg::Update<llvm::BasicBlock*>::dump() which is |
| | 195 | // unavailable when LLVM is compiled in Release mode. |
| | 196 | const zig_cpp_cflags = exe_cflags ++ [_][]const u8{"-DNDEBUG=1"}; |
| | 197 | exe.addCSourceFiles(&zig_cpp_sources, &zig_cpp_cflags); |
| | 198 | |
| 196 | for (clang_libs) |lib_name| { | 199 | for (clang_libs) |lib_name| { |
| 197 | exe.linkSystemLibrary(lib_name); | 200 | exe.linkSystemLibrary(lib_name); |
| 198 | } | 201 | } |