| ... | ... | @@ -139,4 +139,75 @@ pub fn build(b: *std.Build) void { |
| 139 | 139 | _ = exe.getEmittedBin(); |
| 140 | 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 | } |