Create tint.h for external users

tint.h selectively includes headers depending on what features are enabled. It
is based off of the original sample code, so should give users access to all of
the functionality demonstrated in there.

This is located in include/tint/, so that users can have a pretty include of
tint/tint.h.

BUG=tint:87

Change-Id: I8659c789c154349e4e8e7730dc334da4fb6eba70
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/23124
Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index a2e93b0..4009366 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -461,7 +461,10 @@
 }
 
 config("libtint_public_config") {
-  include_dirs = [ "${tint_root_dir}/" ]
+  include_dirs = [
+    "${tint_root_dir}/",
+    "${tint_root_dir}/include/",
+  ]
 }
 
 source_set("libtint") {
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b99473a..b039a60 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -70,6 +70,7 @@
 endif()
 
 include_directories("${PROJECT_SOURCE_DIR}/third_party/spirv-headers/include")
+include_directories("${PROJECT_SOURCE_DIR}/include")
 
 if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR
     ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") OR
diff --git a/include/tint/tint.h b/include/tint/tint.h
new file mode 100644
index 0000000..7749d8b
--- /dev/null
+++ b/include/tint/tint.h
@@ -0,0 +1,45 @@
+// Copyright 2020 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef INCLUDE_TINT_TINT_H_
+#define INCLUDE_TINT_TINT_H_
+
+// TODO(tint:88): When implementing support for an install target, all of these
+//                headers will need to be moved to include/tint/.
+
+#include "src/context.h"
+#include "src/reader/reader.h"
+#include "src/type_determiner.h"
+#include "src/type_manager.h"
+#include "src/validator.h"
+#include "src/writer/writer.h"
+
+#if TINT_BUILD_SPV_READER
+#include "src/reader/spirv/parser.h"
+#endif  // TINT_BUILD_SPV_READER
+
+#if TINT_BUILD_WGSL_READER
+#include "src/reader/wgsl/parser.h"
+#endif  // TINT_BUILD_WGSL_READER
+
+#if TINT_BUILD_SPV_WRITER
+#include "spirv-tools/libspirv.hpp"
+#include "src/writer/spirv/generator.h"
+#endif  // TINT_BUILD_SPV_WRITER
+
+#if TINT_BUILD_WGSL_WRITER
+#include "src/writer/wgsl/generator.h"
+#endif  // TINT_BUILD_WGSL_WRITER
+
+#endif  // INCLUDE_TINT_TINT_H_
diff --git a/samples/main.cc b/samples/main.cc
index 7ea3f31..d5570a9 100644
--- a/samples/main.cc
+++ b/samples/main.cc
@@ -19,29 +19,7 @@
 #include <string>
 #include <vector>
 
-#include "src/context.h"
-#include "src/reader/reader.h"
-#include "src/type_determiner.h"
-#include "src/type_manager.h"
-#include "src/validator.h"
-#include "src/writer/writer.h"
-
-#if TINT_BUILD_SPV_READER
-#include "src/reader/spirv/parser.h"
-#endif  // TINT_BUILD_SPV_READER
-
-#if TINT_BUILD_WGSL_READER
-#include "src/reader/wgsl/parser.h"
-#endif  // TINT_BUILD_WGSL_READER
-
-#if TINT_BUILD_SPV_WRITER
-#include "spirv-tools/libspirv.hpp"
-#include "src/writer/spirv/generator.h"
-#endif  // TINT_BUILD_SPV_WRITER
-
-#if TINT_BUILD_WGSL_WRITER
-#include "src/writer/wgsl/generator.h"
-#endif  // TINT_BUILD_WGSL_WRITER
+#include "tint/tint.h"
 
 namespace {
 
@@ -67,7 +45,7 @@
 const char kUsage[] = R"(Usage: tint [options] SCRIPT [SCRIPTS...]
 
  options:
-  --format <spirv|spvasm|wgsl>  -- Output format. 
+  --format <spirv|spvasm|wgsl>  -- Output format.
                                If not provided, will be inferred from output
                                filename extension:
                                    .spvasm -> spvasm
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4292b9a..01e8a00 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,6 +37,7 @@
 endfunction()
 
 set(TINT_LIB_SRCS
+  ../include/tint/tint.h
   ast/array_accessor_expression.cc
   ast/array_accessor_expression.h
   ast/as_expression.cc