diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-01-04 17:40:11 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-01-04 17:41:16 -0800 |
commit | bf183413c6f6e745f1324e39586a65a4f9fcea3f (patch) | |
tree | 88af7c87a0e550bf34ab1942412ab28b58c26f9e /gcc/go | |
parent | 15af33a88065f983181550fc53821f1c6e14c5c7 (diff) | |
download | gcc-bf183413c6f6e745f1324e39586a65a4f9fcea3f.zip gcc-bf183413c6f6e745f1324e39586a65a4f9fcea3f.tar.gz gcc-bf183413c6f6e745f1324e39586a65a4f9fcea3f.tar.bz2 |
Go frontend: add -fgo-embedcfg option
This option will be used by the go command to implement go:embed directives,
which are new with the upcoming Go 1.16 release.
* lang.opt (fgo-embedcfg): New option.
* go-c.h (struct go_create_gogo_args): Add embedcfg field.
* go-lang.c (go_embedcfg): New static variable.
(go_langhook_init): Set go_create_gogo_args embedcfg field.
(go_langhook_handle_option): Handle OPT_fgo_embedcfg_.
* gccgo.texi (Invoking gccgo): Document -fgo-embedcfg.
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/gccgo.texi | 9 | ||||
-rw-r--r-- | gcc/go/go-c.h | 1 | ||||
-rw-r--r-- | gcc/go/go-lang.c | 6 | ||||
-rw-r--r-- | gcc/go/lang.opt | 4 |
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi index 37adf20..ce6b518 100644 --- a/gcc/go/gccgo.texi +++ b/gcc/go/gccgo.texi @@ -262,6 +262,15 @@ Apply special rules for compiling the runtime package. Implicit memory allocation is forbidden. Some additional compiler directives are supported. +@item -fgo-embedcfg=@var{file} +@cindex @option{-fgo-embedcfg} +Identify a JSON file used to map patterns used with special +@code{//go:embed} comments to the files named by the patterns. The +JSON file should have two components: @code{Patterns} maps each +pattern to a list of file names, and @code{Files} maps each file name +to a full path to the file. This option is intended for use by the +@command{go} command to implement @code{//go:embed}. + @item -g @cindex @option{-g for gccgo} This is the standard @command{gcc} option (@pxref{Debugging Options, , diff --git a/gcc/go/go-c.h b/gcc/go/go-c.h index 651a787..5930ead 100644 --- a/gcc/go/go-c.h +++ b/gcc/go/go-c.h @@ -41,6 +41,7 @@ struct go_create_gogo_args const char* prefix; const char* relative_import_path; const char* c_header; + const char* embedcfg; Backend* backend; Linemap* linemap; bool check_divide_by_zero; diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c index eba40e4..a01db8d 100644 --- a/gcc/go/go-lang.c +++ b/gcc/go/go-lang.c @@ -89,6 +89,7 @@ static const char *go_pkgpath = NULL; static const char *go_prefix = NULL; static const char *go_relative_import_path = NULL; static const char *go_c_header = NULL; +static const char *go_embedcfg = NULL; /* Language hooks. */ @@ -112,6 +113,7 @@ go_langhook_init (void) args.prefix = go_prefix; args.relative_import_path = go_relative_import_path; args.c_header = go_c_header; + args.embedcfg = go_embedcfg; args.check_divide_by_zero = go_check_divide_zero; args.check_divide_overflow = go_check_divide_overflow; args.compiling_runtime = go_compiling_runtime; @@ -282,6 +284,10 @@ go_langhook_handle_option ( go_c_header = arg; break; + case OPT_fgo_embedcfg_: + go_embedcfg = arg; + break; + default: /* Just return 1 to indicate that the option is valid. */ break; diff --git a/gcc/go/lang.opt b/gcc/go/lang.opt index 454a118..7d6780e 100644 --- a/gcc/go/lang.opt +++ b/gcc/go/lang.opt @@ -57,6 +57,10 @@ fgo-dump- Go Joined RejectNegative -fgo-dump-<type> Dump Go frontend internal information. +fgo-embedcfg= +Go Joined RejectNegative +-fgo-embedcfg=<file> List embedded files via go:embed + fgo-optimize- Go Joined -fgo-optimize-<type> Turn on optimization passes in the frontend. |