internal/flags: add package to control specialized functionality

Package flags defines a set of constants to control support for certain features.

Other flags that may be added in the future may include:
	PureGo: to control whether protobuf code should avoid using the unsafe
		package and only use Go reflection.
	PureProto: to control whether the proto package ignores the protoiface
		package and only uses protobuf reflection. This is useful for testing.
	Proto2ValidateUTF8: whether to validate UTF-8 in proto2 strings.
	Proto3ValidateUTF8: whether to validate UTF-8 in proto3 strings.

Change-Id: Ibcb8dd8b3e977633b8a4e4a22a0617f2eebcc325
Reviewed-on: https://go-review.googlesource.com/127820
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/flags/flags.go b/internal/flags/flags.go
new file mode 100644
index 0000000..8208a6d
--- /dev/null
+++ b/internal/flags/flags.go
@@ -0,0 +1,16 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package flags provides a set of flags controlled by build tags.
+package flags
+
+// Proto1Legacy specifies whether to enable support for legacy proto1
+// functionality such as MessageSets, weak fields, and various other obscure
+// behavior that is necessary to maintain backwards compatibility with proto1.
+//
+// This is disabled by default unless built with the "proto1_legacy" tag.
+//
+// WARNING: The compatibility agreement covers nothing provided by this flag.
+// As such, functionality may suddenly be removed or changed at our discretion.
+const Proto1Legacy = proto1Legacy
diff --git a/internal/flags/proto1_legacy_disable.go b/internal/flags/proto1_legacy_disable.go
new file mode 100644
index 0000000..6bd2e89
--- /dev/null
+++ b/internal/flags/proto1_legacy_disable.go
@@ -0,0 +1,9 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE.md file.
+
+// +build !proto1_legacy
+
+package flags
+
+const proto1Legacy = false
diff --git a/internal/flags/proto1_legacy_enable.go b/internal/flags/proto1_legacy_enable.go
new file mode 100644
index 0000000..520d537
--- /dev/null
+++ b/internal/flags/proto1_legacy_enable.go
@@ -0,0 +1,9 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE.md file.
+
+// +build proto1_legacy
+
+package flags
+
+const proto1Legacy = true