authorgravatar for carl@astholm.seCarl Åstholm <carl@astholm.se> 2025-01-23 23:15:44+01:00
committergravatar for carl@astholm.seCarl Åstholm <carl@astholm.se> 2025-07-26 12:06:42+02:00
log413179ccfca32691504805d04ab1359104d22144
tree1a7f3db794f5de61162a981111e97dc9e0169565
parentfc4b7c968afa6fa0780a011f3c8cfeaea38b7b98

std.Build: Deprecate `Step.Compile` APIs that mutate the root module

Not only are `Step.Compile` methods like `linkLibC()` redundant because `Module` exposes the same APIs, it also might not be immediately obvious to users that these methods modify the underlying root module, which can be a footgun and lead to unintended results if the module is exported to package consumers or shared by multiple compile steps. Using `compile.root_module.link_libc = true` makes it more clear to users which of the compile step and the module owns which options.

1 files changed, 42 insertions(+), 4 deletions(-)

lib/std/Build/Step/Compile.zig+42-4
...@@ -681,10 +681,14 @@ pub fn producesImplib(compile: *Compile) bool {...@@ -681,10 +681,14 @@ pub fn producesImplib(compile: *Compile) bool {
681 return compile.isDll();681 return compile.isDll();
682}682}
683683
684/// Deprecated; use `compile.root_module.link_libc = true` instead.
685/// To be removed after 0.15.0 is tagged.
684pub fn linkLibC(compile: *Compile) void {686pub fn linkLibC(compile: *Compile) void {
685 compile.root_module.link_libc = true;687 compile.root_module.link_libc = true;
686}688}
687689
690/// Deprecated; use `compile.root_module.link_libcpp = true` instead.
691/// To be removed after 0.15.0 is tagged.
688pub fn linkLibCpp(compile: *Compile) void {692pub fn linkLibCpp(compile: *Compile) void {
689 compile.root_module.link_libcpp = true;693 compile.root_module.link_libcpp = true;
690}694}
...@@ -802,10 +806,14 @@ fn runPkgConfig(compile: *Compile, lib_name: []const u8) !PkgConfigResult {...@@ -802,10 +806,14 @@ fn runPkgConfig(compile: *Compile, lib_name: []const u8) !PkgConfigResult {
802 };806 };
803}807}
804808
809/// Deprecated; use `compile.root_module.linkSystemLibrary(name, .{})` instead.
810/// To be removed after 0.15.0 is tagged.
805pub fn linkSystemLibrary(compile: *Compile, name: []const u8) void {811pub fn linkSystemLibrary(compile: *Compile, name: []const u8) void {
806 return compile.root_module.linkSystemLibrary(name, .{});812 return compile.root_module.linkSystemLibrary(name, .{});
807}813}
808814
815/// Deprecated; use `compile.root_module.linkSystemLibrary(name, options)` instead.
816/// To be removed after 0.15.0 is tagged.
809pub fn linkSystemLibrary2(817pub fn linkSystemLibrary2(
810 compile: *Compile,818 compile: *Compile,
811 name: []const u8,819 name: []const u8,
...@@ -814,22 +822,26 @@ pub fn linkSystemLibrary2(...@@ -814,22 +822,26 @@ pub fn linkSystemLibrary2(
814 return compile.root_module.linkSystemLibrary(name, options);822 return compile.root_module.linkSystemLibrary(name, options);
815}823}
816824
825/// Deprecated; use `c.root_module.linkFramework(name, .{})` instead.
826/// To be removed after 0.15.0 is tagged.
817pub fn linkFramework(c: *Compile, name: []const u8) void {827pub fn linkFramework(c: *Compile, name: []const u8) void {
818 c.root_module.linkFramework(name, .{});828 c.root_module.linkFramework(name, .{});
819}829}
820830
821/// Handy when you have many C/C++ source files and want them all to have the same flags.831/// Deprecated; use `compile.root_module.addCSourceFiles(options)` instead.
832/// To be removed after 0.15.0 is tagged.
822pub fn addCSourceFiles(compile: *Compile, options: Module.AddCSourceFilesOptions) void {833pub fn addCSourceFiles(compile: *Compile, options: Module.AddCSourceFilesOptions) void {
823 compile.root_module.addCSourceFiles(options);834 compile.root_module.addCSourceFiles(options);
824}835}
825836
837/// Deprecated; use `compile.root_module.addCSourceFile(source)` instead.
838/// To be removed after 0.15.0 is tagged.
826pub fn addCSourceFile(compile: *Compile, source: Module.CSourceFile) void {839pub fn addCSourceFile(compile: *Compile, source: Module.CSourceFile) void {
827 compile.root_module.addCSourceFile(source);840 compile.root_module.addCSourceFile(source);
828}841}
829842
830/// Resource files must have the extension `.rc`.843/// Deprecated; use `compile.root_module.addWin32ResourceFile(source)` instead.
831/// Can be called regardless of target. The .rc file will be ignored844/// To be removed after 0.15.0 is tagged.
832/// if the target object format does not support embedded resources.
833pub fn addWin32ResourceFile(compile: *Compile, source: Module.RcSourceFile) void {845pub fn addWin32ResourceFile(compile: *Compile, source: Module.RcSourceFile) void {
834 compile.root_module.addWin32ResourceFile(source);846 compile.root_module.addWin32ResourceFile(source);
835}847}
...@@ -915,54 +927,80 @@ pub fn getEmittedLlvmBc(compile: *Compile) LazyPath {...@@ -915,54 +927,80 @@ pub fn getEmittedLlvmBc(compile: *Compile) LazyPath {
915 return compile.getEmittedFileGeneric(&compile.generated_llvm_bc);927 return compile.getEmittedFileGeneric(&compile.generated_llvm_bc);
916}928}
917929
930/// Deprecated; use `compile.root_module.addAssemblyFile(source)` instead.
931/// To be removed after 0.15.0 is tagged.
918pub fn addAssemblyFile(compile: *Compile, source: LazyPath) void {932pub fn addAssemblyFile(compile: *Compile, source: LazyPath) void {
919 compile.root_module.addAssemblyFile(source);933 compile.root_module.addAssemblyFile(source);
920}934}
921935
936/// Deprecated; use `compile.root_module.addObjectFile(source)` instead.
937/// To be removed after 0.15.0 is tagged.
922pub fn addObjectFile(compile: *Compile, source: LazyPath) void {938pub fn addObjectFile(compile: *Compile, source: LazyPath) void {
923 compile.root_module.addObjectFile(source);939 compile.root_module.addObjectFile(source);
924}940}
925941
942/// Deprecated; use `compile.root_module.addObject(object)` instead.
943/// To be removed after 0.15.0 is tagged.
926pub fn addObject(compile: *Compile, object: *Compile) void {944pub fn addObject(compile: *Compile, object: *Compile) void {
927 compile.root_module.addObject(object);945 compile.root_module.addObject(object);
928}946}
929947
948/// Deprecated; use `compile.root_module.linkLibrary(library)` instead.
949/// To be removed after 0.15.0 is tagged.
930pub fn linkLibrary(compile: *Compile, library: *Compile) void {950pub fn linkLibrary(compile: *Compile, library: *Compile) void {
931 compile.root_module.linkLibrary(library);951 compile.root_module.linkLibrary(library);
932}952}
933953
954/// Deprecated; use `compile.root_module.addAfterIncludePath(lazy_path)` instead.
955/// To be removed after 0.15.0 is tagged.
934pub fn addAfterIncludePath(compile: *Compile, lazy_path: LazyPath) void {956pub fn addAfterIncludePath(compile: *Compile, lazy_path: LazyPath) void {
935 compile.root_module.addAfterIncludePath(lazy_path);957 compile.root_module.addAfterIncludePath(lazy_path);
936}958}
937959
960/// Deprecated; use `compile.root_module.addSystemIncludePath(lazy_path)` instead.
961/// To be removed after 0.15.0 is tagged.
938pub fn addSystemIncludePath(compile: *Compile, lazy_path: LazyPath) void {962pub fn addSystemIncludePath(compile: *Compile, lazy_path: LazyPath) void {
939 compile.root_module.addSystemIncludePath(lazy_path);963 compile.root_module.addSystemIncludePath(lazy_path);
940}964}
941965
966/// Deprecated; use `compile.root_module.addIncludePath(lazy_path)` instead.
967/// To be removed after 0.15.0 is tagged.
942pub fn addIncludePath(compile: *Compile, lazy_path: LazyPath) void {968pub fn addIncludePath(compile: *Compile, lazy_path: LazyPath) void {
943 compile.root_module.addIncludePath(lazy_path);969 compile.root_module.addIncludePath(lazy_path);
944}970}
945971
972/// Deprecated; use `compile.root_module.addConfigHeader(config_header)` instead.
973/// To be removed after 0.15.0 is tagged.
946pub fn addConfigHeader(compile: *Compile, config_header: *Step.ConfigHeader) void {974pub fn addConfigHeader(compile: *Compile, config_header: *Step.ConfigHeader) void {
947 compile.root_module.addConfigHeader(config_header);975 compile.root_module.addConfigHeader(config_header);
948}976}
949977
978/// Deprecated; use `compile.root_module.addEmbedPath(lazy_path)` instead.
979/// To be removed after 0.15.0 is tagged.
950pub fn addEmbedPath(compile: *Compile, lazy_path: LazyPath) void {980pub fn addEmbedPath(compile: *Compile, lazy_path: LazyPath) void {
951 compile.root_module.addEmbedPath(lazy_path);981 compile.root_module.addEmbedPath(lazy_path);
952}982}
953983
984/// Deprecated; use `compile.root_module.addLibraryPath(directory_path)` instead.
985/// To be removed after 0.15.0 is tagged.
954pub fn addLibraryPath(compile: *Compile, directory_path: LazyPath) void {986pub fn addLibraryPath(compile: *Compile, directory_path: LazyPath) void {
955 compile.root_module.addLibraryPath(directory_path);987 compile.root_module.addLibraryPath(directory_path);
956}988}
957989
990/// Deprecated; use `compile.root_module.addRPath(directory_path)` instead.
991/// To be removed after 0.15.0 is tagged.
958pub fn addRPath(compile: *Compile, directory_path: LazyPath) void {992pub fn addRPath(compile: *Compile, directory_path: LazyPath) void {
959 compile.root_module.addRPath(directory_path);993 compile.root_module.addRPath(directory_path);
960}994}
961995
996/// Deprecated; use `compile.root_module.addSystemFrameworkPath(directory_path)` instead.
997/// To be removed after 0.15.0 is tagged.
962pub fn addSystemFrameworkPath(compile: *Compile, directory_path: LazyPath) void {998pub fn addSystemFrameworkPath(compile: *Compile, directory_path: LazyPath) void {
963 compile.root_module.addSystemFrameworkPath(directory_path);999 compile.root_module.addSystemFrameworkPath(directory_path);
964}1000}
9651001
1002/// Deprecated; use `compile.root_module.addFrameworkPath(directory_path)` instead.
1003/// To be removed after 0.15.0 is tagged.
966pub fn addFrameworkPath(compile: *Compile, directory_path: LazyPath) void {1004pub fn addFrameworkPath(compile: *Compile, directory_path: LazyPath) void {
967 compile.root_module.addFrameworkPath(directory_path);1005 compile.root_module.addFrameworkPath(directory_path);
968}1006}