| ... | @@ -139,4 +139,75 @@ pub fn build(b: *std.Build) void { | ... | @@ -139,4 +139,75 @@ pub fn build(b: *std.Build) void { |
| 139 | _ = exe.getEmittedBin(); | 139 | _ = exe.getEmittedBin(); |
| 140 | test_step.dependOn(&exe.step); | 140 | test_step.dependOn(&exe.step); |
| 141 | } | 141 | } |
| | 142 | |
| | 143 | const load_dll_exe = b.addExecutable(.{ .name = "load_dll", .root_module = b.createModule(.{ |
| | 144 | .root_source_file = b.path("loaddll.zig"), |
| | 145 | .target = target, |
| | 146 | .optimize = .Debug, |
| | 147 | }) }); |
| | 148 | |
| | 149 | { |
| | 150 | const dll = b.addLibrary(.{ |
| | 151 | .name = "zig_dllmain", |
| | 152 | .linkage = .dynamic, |
| | 153 | .root_module = b.createModule(.{ |
| | 154 | .root_source_file = b.path("dllmain.zig"), |
| | 155 | .target = target, |
| | 156 | .optimize = .Debug, |
| | 157 | }), |
| | 158 | }); |
| | 159 | |
| | 160 | const run = b.addRunArtifact(load_dll_exe); |
| | 161 | run.addArtifactArg(dll); |
| | 162 | run.expectStdErrEqual("hello from DllMain"); |
| | 163 | run.expectStdOutEqual(""); |
| | 164 | run.expectExitCode(0); |
| | 165 | run.skip_foreign_checks = true; |
| | 166 | |
| | 167 | test_step.dependOn(&run.step); |
| | 168 | } |
| | 169 | |
| | 170 | { |
| | 171 | const dll = b.addLibrary(.{ |
| | 172 | .name = "zig_dllmain_link_libc", |
| | 173 | .linkage = .dynamic, |
| | 174 | .root_module = b.createModule(.{ |
| | 175 | .root_source_file = b.path("dllmain.zig"), |
| | 176 | .target = target, |
| | 177 | .optimize = .Debug, |
| | 178 | .link_libc = true, |
| | 179 | }), |
| | 180 | }); |
| | 181 | |
| | 182 | const run = b.addRunArtifact(load_dll_exe); |
| | 183 | run.addArtifactArg(dll); |
| | 184 | run.expectStdErrEqual("hello from DllMain"); |
| | 185 | run.expectStdOutEqual(""); |
| | 186 | run.expectExitCode(0); |
| | 187 | run.skip_foreign_checks = true; |
| | 188 | |
| | 189 | test_step.dependOn(&run.step); |
| | 190 | } |
| | 191 | |
| | 192 | { |
| | 193 | const dll = b.addLibrary(.{ |
| | 194 | .name = "c_dllmain", |
| | 195 | .linkage = .dynamic, |
| | 196 | .root_module = b.createModule(.{ |
| | 197 | .target = target, |
| | 198 | .optimize = .Debug, |
| | 199 | .link_libc = true, |
| | 200 | }), |
| | 201 | }); |
| | 202 | dll.root_module.addCSourceFile(.{ .file = b.path("dllmain.c") }); |
| | 203 | |
| | 204 | const run = b.addRunArtifact(load_dll_exe); |
| | 205 | run.addArtifactArg(dll); |
| | 206 | run.expectStdErrEqual("hello from DllMain"); |
| | 207 | run.expectStdOutEqual(""); |
| | 208 | run.expectExitCode(0); |
| | 209 | run.skip_foreign_checks = true; |
| | 210 | |
| | 211 | test_step.dependOn(&run.step); |
| | 212 | } |
| 142 | } | 213 | } |