Remove boost dependency (#87)

Define own noncopyable class, remove boost dependency from build
scripts. Helps build fuzzers in this library as part of Chromium
fuzzing, as a boost dependency can't be introduced there.
diff --git a/.gitmodules b/.gitmodules
index 9b3e2b4..9e766f6 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,9 +13,6 @@
 [submodule "external/bzip2"]
 	path = external/bzip2
 	url = git://sourceware.org/git/bzip2.git
-[submodule "external/boost"]
-	path = external/boost
-	url = https://github.com/boostorg/boost.git
 [submodule "external/brotli"]
 	path = external/brotli
 	url = https://github.com/google/brotli.git
diff --git a/fuzzing/CMakeLists.txt b/fuzzing/CMakeLists.txt
index 0e74d1d..17069bd 100644
--- a/fuzzing/CMakeLists.txt
+++ b/fuzzing/CMakeLists.txt
@@ -52,8 +52,6 @@
 set(FREETYPE_SRC_DIR        "${FREETYPE_BASE_DIR}/src")
 set(FREETYPE_STATIC_LIBRARY "${FREETYPE_BASE_DIR}/objs/.libs/libfreetype.a")
 
-set(BOOST_BASE_DIR "${SUBMODULES_DIR}/boost")
-
 set(GLOG_BASE_DIR       "${SUBMODULES_DIR}/glog")
 set(GLOG_SRC_DIR        "${GLOG_BASE_DIR}/src")
 set(GLOG_BUILD_DIR      "${GLOG_BASE_DIR}/build")
@@ -253,7 +251,6 @@
 
 include_directories(
   "${FREETYPE_BASE_DIR}/include"
-  "${BOOST_BASE_DIR}"
   "${FUZZING_SRC_DIR}"
   "${LIBARCHIVE_BASE_DIR}/libarchive")
 
diff --git a/fuzzing/scripts/build-fuzzers.sh b/fuzzing/scripts/build-fuzzers.sh
index 7d33d61..837d634 100644
--- a/fuzzing/scripts/build-fuzzers.sh
+++ b/fuzzing/scripts/build-fuzzers.sh
@@ -25,7 +25,6 @@
 bash "build/brotli.sh"
 bash "build/bzip2.sh"
 bash "build/freetype.sh"
-bash "build/boost.sh"
 bash "build/targets.sh"
 
 cd "${dir}"
diff --git a/fuzzing/scripts/build/boost.sh b/fuzzing/scripts/build/boost.sh
deleted file mode 100644
index bf46352..0000000
--- a/fuzzing/scripts/build/boost.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-set -exo pipefail
-
-# Copyright 2019 by
-# Armin Hasitzka.
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-
-dir="${PWD}"
-cd $( dirname $( readlink -f "${0}" ) ) # go to `/fuzzing/scripts/build'
-
-path_to_boost=$( readlink -f "../../../external/boost" )
-
-if [[ "${#}" == "0" || "${1}" != "--no-init" ]]; then
-
-    git submodule update --init "${path_to_boost}"
-
-    cd "${path_to_boost}"
-
-    git clean -dfqx
-    git reset --hard
-    git rev-parse HEAD
-
-    mods=(
-        "libs/config"
-        "libs/core"
-        "tools"
-    )
-    
-    for m in "${mods[@]}"; do
-        git submodule update --init "${m}"
-    done
-
-    sh ./bootstrap.sh
-
-    ./b2                     \
-        variant=release      \
-        link=static          \
-        runtime-link=static  \
-
-fi
-
-cd "${dir}"
diff --git a/fuzzing/scripts/custom-build.sh b/fuzzing/scripts/custom-build.sh
index a2b9509..726f2a0 100755
--- a/fuzzing/scripts/custom-build.sh
+++ b/fuzzing/scripts/custom-build.sh
@@ -391,7 +391,6 @@
 bash "build/brotli.sh"
 bash "build/bzip2.sh"
 bash "build/freetype.sh"
-bash "build/boost.sh"
 bash "build/targets.sh"
 
 cd "${dir}"
diff --git a/fuzzing/scripts/travis-ci/regression-suite.sh b/fuzzing/scripts/travis-ci/regression-suite.sh
index 744ef03..26d68d0 100644
--- a/fuzzing/scripts/travis-ci/regression-suite.sh
+++ b/fuzzing/scripts/travis-ci/regression-suite.sh
@@ -31,7 +31,6 @@
 bash "build/brotli.sh"
 bash "build/bzip2.sh"
 bash "build/freetype.sh"
-bash "build/boost.sh"
 bash "build/targets.sh"
 
 cd ../build
diff --git a/fuzzing/src/driver/DriverInternals.h b/fuzzing/src/driver/DriverInternals.h
index e354427..9dcbc60 100644
--- a/fuzzing/src/driver/DriverInternals.h
+++ b/fuzzing/src/driver/DriverInternals.h
@@ -20,14 +20,15 @@
 #include <unordered_map>
 #include <vector>
 
-#include <boost/core/noncopyable.hpp>
+
+#include "utils/noncopyable.h"
 
 
 namespace freetype {
 
 
   class DriverInternals
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/iterators/faceloaditerator.h b/fuzzing/src/iterators/faceloaditerator.h
index 510fb8d..dd2a724 100644
--- a/fuzzing/src/iterators/faceloaditerator.h
+++ b/fuzzing/src/iterators/faceloaditerator.h
@@ -18,13 +18,12 @@
 
 #include <memory> // std::unique_ptr
 
-#include <boost/core/noncopyable.hpp>
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
 #include "iterators/faceprepiterator.h"
 #include "utils/faceloader.h"
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 #include "visitors/facevisitor.h"
 
@@ -33,11 +32,11 @@
 
 
   class FaceLoadIterator
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
-    
+
     FaceLoadIterator()
       : face_loader( new FaceLoader ) {}
 
diff --git a/fuzzing/src/iterators/faceprepiterator.h b/fuzzing/src/iterators/faceprepiterator.h
index 2c20990..2f10cbd 100644
--- a/fuzzing/src/iterators/faceprepiterator.h
+++ b/fuzzing/src/iterators/faceprepiterator.h
@@ -18,8 +18,6 @@
 
 #include <memory> // std::unique_ptr
 
-#include <boost/core/noncopyable.hpp>
-
 #include "iterators/glyphloaditerator.h"
 #include "utils/faceloader.h"
 #include "utils/utils.h"
@@ -30,7 +28,7 @@
 
 
   class FacePrepIterator
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/iterators/glyphloaditerator.h b/fuzzing/src/iterators/glyphloaditerator.h
index 4f4e715..bd7f49e 100644
--- a/fuzzing/src/iterators/glyphloaditerator.h
+++ b/fuzzing/src/iterators/glyphloaditerator.h
@@ -18,9 +18,8 @@
 #include <memory> // std::unique_ptr
 #include <vector>
 
-#include <boost/core/noncopyable.hpp>
-
 #include "iterators/glyphrenderiterator.h"
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 #include "visitors/glyphvisitor.h"
 
@@ -29,7 +28,7 @@
 
 
   class GlyphLoadIterator
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/iterators/glyphrenderiterator.h b/fuzzing/src/iterators/glyphrenderiterator.h
index 4526aa8..1621a38 100644
--- a/fuzzing/src/iterators/glyphrenderiterator.h
+++ b/fuzzing/src/iterators/glyphrenderiterator.h
@@ -19,8 +19,7 @@
 #include <memory> // std::unique_ptr
 #include <vector>
 
-#include <boost/core/noncopyable.hpp>
-
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 #include "visitors/glyphvisitor.h"
 
@@ -29,7 +28,7 @@
 
 
   class GlyphRenderIterator
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/targets/FuzzTarget.h b/fuzzing/src/targets/FuzzTarget.h
index b3600a9..03d91e9 100644
--- a/fuzzing/src/targets/FuzzTarget.h
+++ b/fuzzing/src/targets/FuzzTarget.h
@@ -18,18 +18,17 @@
 
 #include <cstdint>
 
-#include <boost/core/noncopyable.hpp>
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 #include <freetype/internal/ftobjs.h>
 
+#include "utils/noncopyable.h"
 
 namespace freetype {
 
 
   class FuzzTarget
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/utils/FreeTypeStream.h b/fuzzing/src/utils/FreeTypeStream.h
index 8b1a4c1..977f2e8 100644
--- a/fuzzing/src/utils/FreeTypeStream.h
+++ b/fuzzing/src/utils/FreeTypeStream.h
@@ -18,18 +18,19 @@
 
 #include <cstdint>
 
-#include <boost/core/noncopyable.hpp>
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 #include <freetype/internal/ftstream.h>
 
 
+#include "utils/noncopyable.h"
+
+
 namespace freetype {
 
 
   class FreeTypeStream
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/utils/faceloader.h b/fuzzing/src/utils/faceloader.h
index ee6afa0..ee1f61e 100644
--- a/fuzzing/src/utils/faceloader.h
+++ b/fuzzing/src/utils/faceloader.h
@@ -19,12 +19,11 @@
 #include <string>
 #include <vector>
 
-#include <boost/core/noncopyable.hpp>
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
 #include "utils/tarreader.h"
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 
 
@@ -32,7 +31,7 @@
 
 
   class FaceLoader
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/utils/noncopyable.h b/fuzzing/src/utils/noncopyable.h
new file mode 100644
index 0000000..a3f4b18
--- /dev/null
+++ b/fuzzing/src/utils/noncopyable.h
@@ -0,0 +1,42 @@
+// noncopyable.h
+//
+//   Helper base class for copy constructor and copy assignment
+//   operator deletion.
+//
+// Copyright 2020 by
+// Dominik Roettsches
+//
+// This file is part of the FreeType project, and may only be used,
+// modified, and distributed under the terms of the FreeType project
+// license, LICENSE.TXT.  By continuing to use, modify, or distribute
+// this file you indicate that you have read the license and
+// understand and accept it fully.
+
+#ifndef UTILS_NONCOPYABLE_H_
+#define UTILS_NONCOPYABLE_H_
+
+
+namespace freetype
+{
+
+
+  class noncopyable
+  {
+  protected:
+
+
+    noncopyable()  = default;
+
+
+    ~noncopyable() = default;
+
+
+    noncopyable( const noncopyable& ) = delete;
+
+
+    noncopyable&
+    operator=( const noncopyable& ) = delete;
+  };
+}  // namespace freetype
+
+#endif // UTILS_NONCOPYABLE_H_
diff --git a/fuzzing/src/utils/tarreader.h b/fuzzing/src/utils/tarreader.h
index c38e1a9..33d0193 100644
--- a/fuzzing/src/utils/tarreader.h
+++ b/fuzzing/src/utils/tarreader.h
@@ -17,11 +17,10 @@
 
 #include <vector>
 
-#include <boost/core/noncopyable.hpp>
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 
 
@@ -29,7 +28,7 @@
 
 
   class TarReader
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/visitors/facevisitor.h b/fuzzing/src/visitors/facevisitor.h
index 2eea0ae..b7aeea7 100644
--- a/fuzzing/src/visitors/facevisitor.h
+++ b/fuzzing/src/visitors/facevisitor.h
@@ -16,11 +16,10 @@
 #define VISITORS_FACE_VISITOR_H_
 
 
-#include <boost/core/noncopyable.hpp>
-
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 
 
@@ -28,7 +27,7 @@
 
 
   class FaceVisitor
-    : private boost::noncopyable
+    : private noncopyable
   {
   public:
 
diff --git a/fuzzing/src/visitors/glyphvisitor.h b/fuzzing/src/visitors/glyphvisitor.h
index 0da66c9..ffa1ced 100644
--- a/fuzzing/src/visitors/glyphvisitor.h
+++ b/fuzzing/src/visitors/glyphvisitor.h
@@ -16,16 +16,15 @@
 #define VISITORS_GLYPH_VISITOR_H_
 
 
+#include "utils/noncopyable.h"
 #include "utils/utils.h"
 
-#include <boost/core/noncopyable.hpp>
-
 
 namespace freetype {
 
 
   class GlyphVisitor
-    : private boost::noncopyable
+    : private noncopyable
   {
   public: