aboutsummaryrefslogtreecommitdiffstats
path: root/www/envoy
diff options
context:
space:
mode:
authordanfe <danfe@FreeBSD.org>2019-07-10 17:38:32 +0800
committerdanfe <danfe@FreeBSD.org>2019-07-10 17:38:32 +0800
commitc949990683e2fe2ec876f07574e9601fc4ccca7b (patch)
tree82da48bbc0bec40efd8ab909fd85686d60743fc2 /www/envoy
parent14edd7e943645d2841a5d1da18e5e3c44c1e1fa6 (diff)
downloadfreebsd-ports-gnome-c949990683e2fe2ec876f07574e9601fc4ccca7b.tar.gz
freebsd-ports-gnome-c949990683e2fe2ec876f07574e9601fc4ccca7b.tar.zst
freebsd-ports-gnome-c949990683e2fe2ec876f07574e9601fc4ccca7b.zip
Envoy is a high performance C++ distributed edge and service proxy for
cloud-native services and applications. Envoy is originally built with Bazel, monstrous build system written in Java which does silly things like downloading dependencies from GitHub and is just a PITA to work against. This port is built with two simple makefiles and GNU make(1). Protobuf semantic validation was disabled because it apparently requires pulling in ``Go'' language, and I'm not comfortable with this technology yet. Note that this port currently requires DEFAULT_VERSIONS+=ssl=boringssl added to your /etc/make.conf file. WWW: https://www.envoyproxy.io/
Diffstat (limited to 'www/envoy')
-rw-r--r--www/envoy/Makefile103
-rw-r--r--www/envoy/distinfo13
-rw-r--r--www/envoy/files/makefile-genproto90
-rw-r--r--www/envoy/files/makefile-main172
-rw-r--r--www/envoy/files/patch-source_common_common_posix_thread__impl.cc23
-rw-r--r--www/envoy/files/patch-source_common_common_stack__array.h12
-rw-r--r--www/envoy/files/patch-source_common_protobuf_utility.h15
-rw-r--r--www/envoy/pkg-descr12
8 files changed, 440 insertions, 0 deletions
diff --git a/www/envoy/Makefile b/www/envoy/Makefile
new file mode 100644
index 000000000000..6c1615d14037
--- /dev/null
+++ b/www/envoy/Makefile
@@ -0,0 +1,103 @@
+# Created by: Alexey Dokuchaev <danfe@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= envoy
+PORTVERSION= 1.10.0
+DISTVERSIONPREFIX= v
+CATEGORIES= www
+
+MAINTAINER= danfe@FreeBSD.org
+COMMENT= Edge and service proxy for cloud-native applications
+
+LICENSE= APACHE20
+
+BROKEN_i386= makes a lot of 64-bit assumptions (patches welcome)
+BROKEN_SSL= base openssl openssl111 libressl libressl-devel
+BROKEN_SSL_REASON= requires BoringSSL
+
+BUILD_DEPENDS= ${LOCALBASE}/include/absl/base/thread_annotations.h:devel/abseil \
+ ${LOCALBASE}/include/fmt/format.h:devel/libfmt \
+ ${LOCALBASE}/include/rapidjson/document.h:devel/rapidjson \
+ ${LOCALBASE}/include/spdlog/spdlog.h:devel/spdlog \
+ ${LOCALBASE}/include/tclap/CmdLine.h:devel/tclap
+LIB_DEPENDS= libcircllhist.so:devel/libcircllhist \
+ libevent.so:devel/libevent \
+ libgpr.so:devel/grpc \
+ libprotobuf.so:devel/protobuf \
+ libxxhash.so:devel/xxhash \
+ libyaml-cpp.so:devel/yaml-cpp \
+ libcares.so:dns/c-ares \
+ libhttp_parser.so:www/http-parser \
+ libnghttp2.so:www/libnghttp2
+
+USES= compiler:c++14-lang gmake ssl
+USE_GITHUB= yes
+GH_ACCOUNT= ${PORTNAME}proxy gogo:protobuf googleapis:gapis \
+ prometheus:pm grpc:grpc
+GH_PROJECT= protoc-gen-validate:validate protobuf:protobuf \
+ googleapis:gapis client_model:pm grpc:grpc
+GH_TAGNAME= v0.1.0:validate v1.1.1:protobuf b4c73fa:gapis \
+ fd36f42:pm v1.22.0:grpc
+
+PLIST_FILES= bin/envoy
+PORTEXAMPLES= cors/backend/front-envoy.yaml \
+ cors/backend/service-envoy.yaml \
+ cors/frontend/front-envoy.yaml \
+ cors/frontend/service-envoy.yaml \
+ front-proxy/front-envoy.yaml \
+ front-proxy/service-envoy.yaml \
+ grpc-bridge/config/s2s-grpc-envoy.yaml \
+ grpc-bridge/config/s2s-python-envoy.yaml \
+ jaeger-tracing/front-envoy-jaeger.yaml \
+ jaeger-tracing/service1-envoy-jaeger.yaml \
+ jaeger-tracing/service2-envoy-jaeger.yaml \
+ lua/envoy.yaml \
+ zipkin-tracing/front-envoy-zipkin.yaml \
+ zipkin-tracing/service1-envoy-zipkin.yaml \
+ zipkin-tracing/service2-envoy-zipkin.yaml
+
+OPTIONS_DEFINE= EXAMPLES
+
+post-extract:
+ ${LN} -s ../../client_model-fd36f42/metrics.proto \
+ ../../googleapis-b4c73fa/google \
+ ../../grpc-1.22.0/src \
+ ../../protobuf-1.1.1/gogoproto \
+ ../../protoc-gen-validate-0.1.0/validate ${WRKSRC}/api
+
+post-patch:
+ @${REINPLACE_CMD} -e '/<endian\.h>/d' \
+ ${WRKSRC}/source/common/common/byte_order.h
+ @${REINPLACE_CMD} -e 's,__APPLE__,__${OPSYS}__,' \
+ ${WRKSRC}/source/common/network/address_impl.cc \
+ ${WRKSRC}/source/common/network/udp_listener_impl.cc
+ @${REINPLACE_CMD} -e 's,O_SYMLINK,O_NOFOLLOW,' \
+ ${WRKSRC}/source/common/filesystem/kqueue/watcher_impl.cc
+ @${REINPLACE_CMD} -e '/#include/s,\.validate,,' \
+ ${WRKSRC}/source/extensions/access_loggers/file/config.cc \
+ ${WRKSRC}/source/server/overload_manager_impl.h
+
+do-configure:
+ ${ECHO_CMD} '#define BUILD_VERSION_NUMBER "${PORTVERSION}"' \
+ > ${WRKSRC}/source/common/common/version_number.h
+ ${LN} -s kqueue/watcher_impl.h posix/filesystem_impl.h \
+ posix/directory_iterator_impl.h \
+ ${WRKSRC}/source/common/filesystem
+ ${LN} -s posix/platform_impl.h ${WRKSRC}/source/exe
+ ${LN} -s posix/thread_impl.h ${WRKSRC}/source/common/common
+
+do-build:
+ ${MAKE_CMD} -C ${WRKSRC}/api -f ${FILESDIR}/makefile-genproto
+ ${MAKE_CMD} ${_MAKE_JOBS} -C ${WRKSRC}/source \
+ -f ${FILESDIR}/makefile-main
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/source/${PORTNAME} \
+ ${STAGEDIR}${PREFIX}/bin
+
+do-install-EXAMPLES-on:
+ @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+ ${TAR} -cf - -C ${WRKSRC}/examples ${PORTEXAMPLES} | \
+ ${TAR} -xf - -C ${STAGEDIR}${EXAMPLESDIR}
+
+.include <bsd.port.mk>
diff --git a/www/envoy/distinfo b/www/envoy/distinfo
new file mode 100644
index 000000000000..79a047de018d
--- /dev/null
+++ b/www/envoy/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1554487664
+SHA256 (envoyproxy-envoy-v1.10.0_GH0.tar.gz) = 0fd7a0d11662730abeb12b19ef52af771f7426132e13e7eca7ac1fe81287add1
+SIZE (envoyproxy-envoy-v1.10.0_GH0.tar.gz) = 3391626
+SHA256 (gogo-protobuf-v1.1.1_GH0.tar.gz) = 9f8c2ad49849ab063cd9fef67e77d49606640044227ecf7f3617ea2c92ef147c
+SIZE (gogo-protobuf-v1.1.1_GH0.tar.gz) = 1868227
+SHA256 (googleapis-googleapis-b4c73fa_GH0.tar.gz) = a8989197096e2643c472fe87d2ad38b58f1737330f16fd2e5d5f0ce6623a2697
+SIZE (googleapis-googleapis-b4c73fa_GH0.tar.gz) = 1773201
+SHA256 (prometheus-client_model-fd36f42_GH0.tar.gz) = 11f679aee5a14f33afc1ec14eefd7f7665f4d5a11718cb63d246bd36531813ac
+SIZE (prometheus-client_model-fd36f42_GH0.tar.gz) = 57479
+SHA256 (grpc-grpc-v1.22.0_GH0.tar.gz) = 11ac793c562143d52fd440f6549588712badc79211cdc8c509b183cb69bddad8
+SIZE (grpc-grpc-v1.22.0_GH0.tar.gz) = 15082718
+SHA256 (envoyproxy-protoc-gen-validate-v0.1.0_GH0.tar.gz) = 49a275b7aff7e9c7e84db38e405b49b1ac91bbd2fcbd0c253d39ec412ed3be61
+SIZE (envoyproxy-protoc-gen-validate-v0.1.0_GH0.tar.gz) = 9625220
diff --git a/www/envoy/files/makefile-genproto b/www/envoy/files/makefile-genproto
new file mode 100644
index 000000000000..6a33f561dd68
--- /dev/null
+++ b/www/envoy/files/makefile-genproto
@@ -0,0 +1,90 @@
+# $FreeBSD$
+
+LOCALBASE?= /usr/local
+PROTOC_FLAGS= -I. -I$(LOCALBASE)/include
+
+PB_HEADERS= \
+ envoy/admin/v2alpha/certs.pb.h \
+ envoy/admin/v2alpha/clusters.pb.h \
+ envoy/admin/v2alpha/config_dump.pb.h \
+ envoy/admin/v2alpha/memory.pb.h \
+ envoy/admin/v2alpha/metrics.pb.h \
+ envoy/admin/v2alpha/mutex_stats.pb.h \
+ envoy/admin/v2alpha/server_info.pb.h \
+ envoy/api/v2/auth/cert.pb.h \
+ envoy/api/v2/cds.pb.h \
+ envoy/api/v2/cluster/circuit_breaker.pb.h \
+ envoy/api/v2/cluster/outlier_detection.pb.h \
+ envoy/api/v2/core/address.pb.h \
+ envoy/api/v2/core/base.pb.h \
+ envoy/api/v2/core/config_source.pb.h \
+ envoy/api/v2/core/grpc_service.pb.h \
+ envoy/api/v2/core/health_check.pb.h \
+ envoy/api/v2/core/http_uri.pb.h \
+ envoy/api/v2/core/protocol.pb.h \
+ envoy/api/v2/discovery.pb.h \
+ envoy/api/v2/eds.pb.h \
+ envoy/api/v2/endpoint/endpoint.pb.h \
+ envoy/api/v2/endpoint/load_report.pb.h \
+ envoy/api/v2/lds.pb.h \
+ envoy/api/v2/listener/listener.pb.h \
+ envoy/api/v2/ratelimit/ratelimit.pb.h \
+ envoy/api/v2/rds.pb.h \
+ envoy/api/v2/route/route.pb.h \
+ envoy/config/accesslog/v2/als.pb.h \
+ envoy/config/accesslog/v2/file.pb.h \
+ envoy/config/bootstrap/v2/bootstrap.pb.h \
+ envoy/config/filter/accesslog/v2/accesslog.pb.h \
+ envoy/config/filter/fault/v2/fault.pb.h \
+ envoy/config/filter/http/buffer/v2/buffer.pb.h \
+ envoy/config/filter/http/fault/v2/fault.pb.h \
+ envoy/config/filter/http/health_check/v2/health_check.pb.h \
+ envoy/config/filter/http/lua/v2/lua.pb.h \
+ envoy/config/filter/http/rate_limit/v2/rate_limit.pb.h \
+ envoy/config/filter/http/router/v2/router.pb.h \
+ envoy/config/filter/http/squash/v2/squash.pb.h \
+ envoy/config/filter/http/transcoder/v2/transcoder.pb.h \
+ envoy/config/filter/network/client_ssl_auth/v2/client_ssl_auth.pb.h \
+ envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.pb.h \
+ envoy/config/filter/network/mongo_proxy/v2/mongo_proxy.pb.h \
+ envoy/config/filter/network/rate_limit/v2/rate_limit.pb.h \
+ envoy/config/filter/network/redis_proxy/v2/redis_proxy.pb.h \
+ envoy/config/filter/network/tcp_proxy/v2/tcp_proxy.pb.h \
+ envoy/config/metrics/v2/metrics_service.pb.h \
+ envoy/config/metrics/v2/stats.pb.h \
+ envoy/config/overload/v2alpha/overload.pb.h \
+ envoy/config/ratelimit/v2/rls.pb.h \
+ envoy/config/rbac/v2alpha/rbac.pb.h \
+ envoy/config/trace/v2/trace.pb.h \
+ envoy/data/accesslog/v2/accesslog.pb.h \
+ envoy/data/cluster/v2alpha/outlier_detection_event.pb.h \
+ envoy/data/core/v2alpha/health_check_event.pb.h \
+ envoy/service/accesslog/v2/als.pb.h \
+ envoy/service/discovery/v2/ads.pb.h \
+ envoy/service/discovery/v2/hds.pb.h \
+ envoy/service/discovery/v2/sds.pb.h \
+ envoy/service/load_stats/v2/lrs.pb.h \
+ envoy/service/metrics/v2/metrics_service.pb.h \
+ envoy/service/ratelimit/v2/rls.pb.h \
+ envoy/type/matcher/metadata.pb.h \
+ envoy/type/matcher/number.pb.h \
+ envoy/type/matcher/string.pb.h \
+ envoy/type/matcher/value.pb.h \
+ envoy/type/percent.pb.h \
+ envoy/type/range.pb.h \
+ gogoproto/gogo.pb.h \
+ google/api/annotations.pb.h \
+ google/api/http.pb.h \
+ google/rpc/status.pb.h \
+ metrics.pb.h \
+ src/proto/grpc/health/v1/health.pb.h \
+ validate/validate.pb.h
+
+%.pb.h: %.proto
+ protoc -I. -I$(LOCALBASE)/include --cpp_out=. $<
+# XXX: we're not ready for semantic validation just yet :(
+ echo >> $(basename $@).validate.h
+
+all: $(PB_HEADERS)
+
+.phony: all
diff --git a/www/envoy/files/makefile-main b/www/envoy/files/makefile-main
new file mode 100644
index 000000000000..2a3161c985ff
--- /dev/null
+++ b/www/envoy/files/makefile-main
@@ -0,0 +1,172 @@
+# $FreeBSD$
+
+LOCALBASE?= /usr/local
+CXXFLAGS+= -std=c++14 -Wall -Wextra -Wno-unused-parameter
+CPPFLAGS+= -I. -I../include -I../api -I$(LOCALBASE)/include \
+ -DNDEBUG -DENVOY_SSL_VERSION=\"BoringSSL\" \
+ -DBUILD_SCM_REVISION=\"e95ef6b\" \
+ -DBUILD_SCM_STATUS=\"Modified\"
+LDFLAGS+= -L$(LOCALBASE)/lib
+CCACHE?= $(shell command -v ccache)
+
+api_OBJS= ../api/envoy/admin/v2alpha/certs.pb.o \
+ ../api/envoy/admin/v2alpha/clusters.pb.o \
+ ../api/envoy/admin/v2alpha/config_dump.pb.o \
+ ../api/envoy/admin/v2alpha/memory.pb.o \
+ ../api/envoy/admin/v2alpha/metrics.pb.o \
+ ../api/envoy/admin/v2alpha/mutex_stats.pb.o \
+ ../api/envoy/admin/v2alpha/server_info.pb.o \
+ ../api/envoy/api/v2/auth/cert.pb.o \
+ ../api/envoy/api/v2/cds.pb.o \
+ ../api/envoy/api/v2/cluster/circuit_breaker.pb.o \
+ ../api/envoy/api/v2/cluster/outlier_detection.pb.o \
+ ../api/envoy/api/v2/core/address.pb.o \
+ ../api/envoy/api/v2/core/base.pb.o \
+ ../api/envoy/api/v2/core/config_source.pb.o \
+ ../api/envoy/api/v2/core/grpc_service.pb.o \
+ ../api/envoy/api/v2/core/health_check.pb.o \
+ ../api/envoy/api/v2/core/protocol.pb.o \
+ ../api/envoy/api/v2/discovery.pb.o \
+ ../api/envoy/api/v2/eds.pb.o \
+ ../api/envoy/api/v2/endpoint/endpoint.pb.o \
+ ../api/envoy/api/v2/endpoint/load_report.pb.o \
+ ../api/envoy/api/v2/lds.pb.o \
+ ../api/envoy/api/v2/listener/listener.pb.o \
+ ../api/envoy/api/v2/ratelimit/ratelimit.pb.o \
+ ../api/envoy/api/v2/rds.pb.o \
+ ../api/envoy/api/v2/route/route.pb.o \
+ ../api/envoy/config/accesslog/v2/als.pb.o \
+ ../api/envoy/config/accesslog/v2/file.pb.o \
+ ../api/envoy/config/bootstrap/v2/bootstrap.pb.o \
+ ../api/envoy/config/filter/accesslog/v2/accesslog.pb.o \
+ ../api/envoy/config/filter/fault/v2/fault.pb.o \
+ ../api/envoy/config/filter/http/fault/v2/fault.pb.o \
+ ../api/envoy/config/filter/http/transcoder/v2/transcoder.pb.o \
+ ../api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.pb.o \
+ ../api/envoy/config/filter/network/redis_proxy/v2/redis_proxy.pb.o \
+ ../api/envoy/config/filter/network/tcp_proxy/v2/tcp_proxy.pb.o \
+ ../api/envoy/config/metrics/v2/metrics_service.pb.o \
+ ../api/envoy/config/metrics/v2/stats.pb.o \
+ ../api/envoy/config/overload/v2alpha/overload.pb.o \
+ ../api/envoy/config/rbac/v2alpha/rbac.pb.o \
+ ../api/envoy/config/trace/v2/trace.pb.o \
+ ../api/envoy/data/accesslog/v2/accesslog.pb.o \
+ ../api/envoy/data/cluster/v2alpha/outlier_detection_event.pb.o \
+ ../api/envoy/data/core/v2alpha/health_check_event.pb.o \
+ ../api/envoy/service/accesslog/v2/als.pb.o \
+ ../api/envoy/service/discovery/v2/ads.pb.o \
+ ../api/envoy/service/discovery/v2/hds.pb.o \
+ ../api/envoy/service/discovery/v2/sds.pb.o \
+ ../api/envoy/service/load_stats/v2/lrs.pb.o \
+ ../api/envoy/service/metrics/v2/metrics_service.pb.o \
+ ../api/envoy/service/ratelimit/v2/rls.pb.o \
+ ../api/envoy/type/matcher/metadata.pb.o \
+ ../api/envoy/type/matcher/number.pb.o \
+ ../api/envoy/type/matcher/string.pb.o \
+ ../api/envoy/type/matcher/value.pb.o \
+ ../api/envoy/type/percent.pb.o \
+ ../api/envoy/type/range.pb.o \
+ ../api/gogoproto/gogo.pb.o \
+ ../api/google/api/annotations.pb.o \
+ ../api/google/api/http.pb.o \
+ ../api/google/rpc/status.pb.o \
+ ../api/metrics.pb.o \
+ ../api/src/proto/grpc/health/v1/health.pb.o \
+ ../api/validate/validate.pb.o
+
+source_OBJS= $(common_SRCS:.cc=.o) \
+ $(exe_SRCS:.cc=.o) \
+ $(extensions_SRCS:.cc=.o) \
+ $(server_SRCS:.cc=.o)
+
+common_SRCS= $(wildcard common/access_log/*.cc) \
+ common/api/api_impl.cc \
+ common/api/os_sys_calls_impl.cc \
+ $(wildcard common/buffer/*.cc) \
+ $(wildcard common/chromium_url/*.cc) \
+ $(wildcard common/common/*.cc) \
+ common/common/posix/thread_impl.cc \
+ $(wildcard common/config/*.cc) \
+ $(wildcard common/event/*.cc) \
+ $(wildcard common/filesystem/*.cc) \
+ common/filesystem/kqueue/watcher_impl.cc \
+ $(wildcard common/filesystem/posix/*.cc) \
+ $(wildcard common/grpc/*.cc) \
+ common/html/utility.cc \
+ $(wildcard common/http/*.cc) \
+ $(wildcard common/http/http1/*.cc) \
+ $(wildcard common/http/http2/*.cc) \
+ $(wildcard common/init/*.cc) \
+ $(wildcard common/json/*.cc) \
+ $(wildcard common/memory/*.cc) \
+ $(wildcard common/network/*.cc) \
+ common/profiler/profiler.cc \
+ common/protobuf/utility.cc \
+ $(wildcard common/router/*.cc) \
+ $(wildcard common/runtime/*.cc) \
+ $(wildcard common/secret/*.cc) \
+ $(wildcard common/singleton/*.cc) \
+ $(wildcard common/ssl/*.cc) \
+ $(wildcard common/stats/*.cc) \
+ $(wildcard common/stream_info/*.cc) \
+ common/tcp/conn_pool.cc \
+ common/thread/thread_factory_singleton.cc \
+ common/thread_local/thread_local_impl.cc \
+ common/tracing/http_tracer_impl.cc \
+ $(wildcard common/upstream/*.cc)
+
+exe_SRCS= $(wildcard exe/*.cc)
+
+extensions_SRCS=\
+ extensions/filters/common/rbac/matchers.cc \
+ $(wildcard extensions/transport_sockets/tls/*.cc) \
+ $(wildcard extensions/access_loggers/*/*.cc) \
+ $(wildcard extensions/stat_sinks/metrics_service/*.cc)
+
+server_SRCS= $(wildcard server/config_validation/*.cc) \
+ server/configuration_impl.o \
+ server/connection_handler_impl.o \
+ server/drain_manager_impl.o \
+ server/guarddog_impl.cc \
+ server/http/admin.o \
+ server/http/config_tracker_impl.o \
+ server/lds_api.o \
+ server/listener_manager_impl.o \
+ server/options_impl.cc \
+ server/options_impl_platform_default.o \
+ server/overload_manager_impl.o \
+ server/proto_descriptors.cc \
+ server/server.o \
+ server/watchdog_impl.o \
+ server/worker_impl.o
+
+%.o: %.cc
+ $(CCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+LIBS= $(LOCALBASE)/lib/libabsl_bad_optional_access.a \
+ $(LOCALBASE)/lib/libabsl_base.a \
+ $(LOCALBASE)/lib/libabsl_city.a \
+ $(LOCALBASE)/lib/libabsl_graphcycles_internal.a \
+ $(LOCALBASE)/lib/libabsl_hash.a \
+ $(LOCALBASE)/lib/libabsl_hashtablez_sampler.a \
+ $(LOCALBASE)/lib/libabsl_int128.a \
+ $(LOCALBASE)/lib/libabsl_malloc_internal.a \
+ $(LOCALBASE)/lib/libabsl_raw_hash_set.a \
+ $(LOCALBASE)/lib/libabsl_spinlock_wait.a \
+ $(LOCALBASE)/lib/libabsl_stacktrace.a \
+ $(LOCALBASE)/lib/libabsl_strings.a \
+ $(LOCALBASE)/lib/libabsl_symbolize.a \
+ $(LOCALBASE)/lib/libabsl_synchronization.a \
+ $(LOCALBASE)/lib/libabsl_throw_delegate.a \
+ $(LOCALBASE)/lib/libabsl_time.a \
+ $(LOCALBASE)/lib/libabsl_time_zone.a \
+ -lcares -lcircllhist -lcrypto -levent -levent_pthreads -lgpr \
+ -lgrpc++ -lhttp_parser -lnghttp2 -lprotobuf -lpthread -lssl \
+ -lxxhash -lyaml-cpp
+
+envoy: $(api_OBJS) $(source_OBJS)
+ $(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+all: envoy
+
+.PHONY: all install
diff --git a/www/envoy/files/patch-source_common_common_posix_thread__impl.cc b/www/envoy/files/patch-source_common_common_posix_thread__impl.cc
new file mode 100644
index 000000000000..c06b2219afda
--- /dev/null
+++ b/www/envoy/files/patch-source_common_common_posix_thread__impl.cc
@@ -0,0 +1,23 @@
+--- source/common/common/posix/thread_impl.cc.orig 2019-04-05 18:07:44 UTC
++++ source/common/common/posix/thread_impl.cc
+@@ -3,6 +3,8 @@
+
+ #if defined(__linux__)
+ #include <sys/syscall.h>
++#elif defined(__FreeBSD__)
++#include <pthread_np.h>
+ #endif
+
+ namespace Envoy {
+@@ -13,9 +15,9 @@ namespace {
+ int64_t getCurrentThreadId() {
+ #ifdef __linux__
+ return static_cast<int64_t>(syscall(SYS_gettid));
+-#elif defined(__APPLE__)
++#elif defined(__FreeBSD__)
+ uint64_t tid;
+- pthread_threadid_np(NULL, &tid);
++ tid = pthread_getthreadid_np();
+ return tid;
+ #else
+ #error "Enable and test pthread id retrieval code for you arch in pthread/thread_impl.cc"
diff --git a/www/envoy/files/patch-source_common_common_stack__array.h b/www/envoy/files/patch-source_common_common_stack__array.h
new file mode 100644
index 000000000000..6627ced6aee7
--- /dev/null
+++ b/www/envoy/files/patch-source_common_common_stack__array.h
@@ -0,0 +1,12 @@
+--- source/common/common/stack_array.h.orig 2019-04-05 18:07:44 UTC
++++ source/common/common/stack_array.h
+@@ -2,9 +2,6 @@
+
+ #ifdef WIN32
+ #include <malloc.h>
+-
+-#else
+-#include <alloca.h>
+ #endif
+
+ #include <stddef.h>
diff --git a/www/envoy/files/patch-source_common_protobuf_utility.h b/www/envoy/files/patch-source_common_protobuf_utility.h
new file mode 100644
index 000000000000..8a50b8865803
--- /dev/null
+++ b/www/envoy/files/patch-source_common_protobuf_utility.h
@@ -0,0 +1,15 @@
+--- source/common/protobuf/utility.h.orig 2019-04-05 18:07:44 UTC
++++ source/common/protobuf/utility.h
+@@ -222,10 +222,12 @@ class MessageUtil { (public)
+ // Log warnings or throw errors if deprecated fields are in use.
+ checkForDeprecation(message);
+
++#if notyet
+ std::string err;
+ if (!Validate(message, &err)) {
+ throw ProtoValidationException(err, message);
+ }
++#endif
+ }
+
+ template <class MessageType>
diff --git a/www/envoy/pkg-descr b/www/envoy/pkg-descr
new file mode 100644
index 000000000000..3e76c6b71526
--- /dev/null
+++ b/www/envoy/pkg-descr
@@ -0,0 +1,12 @@
+Originally built at Lyft, Envoy is a high performance C++ distributed proxy
+designed for single services and applications, as well as a communication
+bus and "universal data plane" designed for large microservice "service
+mesh" architectures. Built on the learnings of solutions such as NGINX,
+HAProxy, hardware load balancers, and cloud load balancers, Envoy runs
+alongside every application and abstracts the network by providing common
+features in a platform-agnostic manner. When all service traffic in an
+infrastructure flows via an Envoy mesh, it becomes easy to visualize problem
+areas via consistent observability, tune overall performance, and add
+substrate features in a single place.
+
+WWW: https://www.envoyproxy.io/