From c4b3c84b3f64ad3c24c2b6ad36616e10c3cf98f3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 2 Apr 2020 15:59:48 -0400 Subject: [PATCH] zig cc: support -F and -framework --- src-self-hosted/clang_options_data.zig | 20 +++++++++++++++++--- src-self-hosted/stage2.zig | 2 ++ src/main.cpp | 6 ++++++ src/stage2.h | 2 ++ tools/update_clang_options.zig | 8 ++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src-self-hosted/clang_options_data.zig b/src-self-hosted/clang_options_data.zig index c7113afa4..0b3a3b941 100644 --- a/src-self-hosted/clang_options_data.zig +++ b/src-self-hosted/clang_options_data.zig @@ -2989,7 +2989,14 @@ sepd1("fprofile-remapping-file"), flagpd1("fprofile-sample-accurate"), flagpd1("fprofile-sample-use"), flagpd1("fprofile-use"), -sepd1("framework"), +.{ + .name = "framework", + .syntax = .separate, + .zig_equivalent = .framework, + .pd1 = true, + .pd2 = false, + .psl = false, +}, flagpd1("freciprocal-math"), flagpd1("frecord-command-line"), flagpd1("ffree-form"), @@ -5670,7 +5677,14 @@ jspd1("MT"), jspd1("A"), jspd1("B"), jspd1("D"), -jspd1("F"), +.{ + .name = "F", + .syntax = .joined_or_separate, + .zig_equivalent = .framework_dir, + .pd1 = true, + .pd2 = false, + .psl = false, +}, jspd1("G"), jspd1("I"), jspd1("J"), @@ -5715,7 +5729,7 @@ joinpd1("Z"), .{ .name = "F", .syntax = .joined_or_separate, - .zig_equivalent = .other, + .zig_equivalent = .framework_dir, .pd1 = true, .pd2 = false, .psl = true, diff --git a/src-self-hosted/stage2.zig b/src-self-hosted/stage2.zig index 9f829b015..43e0a8ffc 100644 --- a/src-self-hosted/stage2.zig +++ b/src-self-hosted/stage2.zig @@ -1291,6 +1291,8 @@ pub const ClangArgIterator = extern struct { lib_dir, mcpu, dep_file, + framework_dir, + framework, }; const Args = struct { diff --git a/src/main.cpp b/src/main.cpp index 5436145bc..d46947628 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -748,6 +748,12 @@ static int main0(int argc, char **argv) { clang_argv.append(it.other_args_ptr[i]); } break; + case Stage2ClangArgFrameworkDir: + framework_dirs.append(it.only_arg); + break; + case Stage2ClangArgFramework: + frameworks.append(it.only_arg); + break; } } // Parse linker args diff --git a/src/stage2.h b/src/stage2.h index c2a7bdc2f..02b33419f 100644 --- a/src/stage2.h +++ b/src/stage2.h @@ -350,6 +350,8 @@ enum Stage2ClangArg { Stage2ClangArgLibDir, Stage2ClangArgMCpu, Stage2ClangArgDepFile, + Stage2ClangArgFrameworkDir, + Stage2ClangArgFramework, }; // ABI warning diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index d6192c93c..dd46f72d4 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -206,6 +206,14 @@ const known_options = [_]KnownOpt{ .name = "MF", .ident = "dep_file", }, + .{ + .name = "F", + .ident = "framework_dir", + }, + .{ + .name = "framework", + .ident = "framework", + }, }; const blacklisted_options = [_][]const u8{};