From 1ff26b4783f36bee139126028f762d6310cf9712 Mon Sep 17 00:00:00 2001 From: Joey Parrish Date: Wed, 17 Aug 2022 10:42:00 -0700 Subject: [PATCH] feat: Move all third-party deps into git submodules (#1083) This also normalizes the structure of all submodule folders so that there is a clear place to put configurations, outside the submodule source, but limited in scope to that folder. Issue #1047 (New build system) --- .gitignore | 5 - .gitmodules | 29 ++- packager/third_party/CMakeLists.txt | 5 + .../third_party/abseil-cpp/CMakeLists.txt | 2 - packager/third_party/glog/CMakeLists.txt | 5 + packager/third_party/json/CMakeLists.txt | 12 + packager/third_party/{json => json/source} | 0 packager/third_party/libpng/CMakeLists.txt | 30 +++ packager/third_party/libpng/libpng.gyp | 52 ----- packager/third_party/libpng/pnglibconf.h | 219 ------------------ packager/third_party/libpng/source | 1 + packager/third_party/libwebm/CMakeLists.txt | 20 ++ packager/third_party/libwebm/libwebm.gyp | 37 --- packager/third_party/libwebm/source | 1 + packager/third_party/libxml2/CMakeLists.txt | 62 +++++ packager/third_party/libxml2/source | 1 + packager/third_party/protobuf/CMakeLists.txt | 37 +++ packager/third_party/protobuf/source | 1 + packager/third_party/zlib/CMakeLists.txt | 21 ++ packager/third_party/zlib/fork.md | 18 ++ packager/third_party/zlib/source | 1 + packager/tools/generate_license_notice.py | 32 +-- 22 files changed, 245 insertions(+), 346 deletions(-) create mode 100644 packager/third_party/json/CMakeLists.txt rename packager/third_party/{json => json/source} (100%) create mode 100644 packager/third_party/libpng/CMakeLists.txt delete mode 100644 packager/third_party/libpng/libpng.gyp delete mode 100644 packager/third_party/libpng/pnglibconf.h create mode 160000 packager/third_party/libpng/source create mode 100644 packager/third_party/libwebm/CMakeLists.txt delete mode 100644 packager/third_party/libwebm/libwebm.gyp create mode 160000 packager/third_party/libwebm/source create mode 100644 packager/third_party/libxml2/CMakeLists.txt create mode 160000 packager/third_party/libxml2/source create mode 100644 packager/third_party/protobuf/CMakeLists.txt create mode 160000 packager/third_party/protobuf/source create mode 100644 packager/third_party/zlib/CMakeLists.txt create mode 100644 packager/third_party/zlib/fork.md create mode 160000 packager/third_party/zlib/source diff --git a/.gitignore b/.gitignore index 735f9ca8fc..bcd7622c20 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,3 @@ .settings build/ /packager/docs/ -/packager/third_party/icu/ -/packager/third_party/libpng/src/ -/packager/third_party/libwebm/src/ -/packager/third_party/modp_b64/ -/packager/third_party/zlib/ diff --git a/.gitmodules b/.gitmodules index d6f9d061cc..c528969fd4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,18 +1,33 @@ -[submodule "packager/testing/googletest"] +[submodule "packager/third_party/googletest/source"] path = packager/third_party/googletest/source url = https://github.com/google/googletest -[submodule "packager/third_party/abseil-cpp"] +[submodule "packager/third_party/abseil-cpp/source"] path = packager/third_party/abseil-cpp/source url = https://github.com/abseil/abseil-cpp -[submodule "packager/third_party/curl"] +[submodule "packager/third_party/curl/source"] path = packager/third_party/curl/source url = https://github.com/curl/curl -[submodule "packager/third_party/glog"] +[submodule "packager/third_party/glog/source"] path = packager/third_party/glog/source url = https://github.com/google/glog -[submodule "packager/third_party/json"] - path = packager/third_party/json +[submodule "packager/third_party/json/source"] + path = packager/third_party/json/source url = https://github.com/nlohmann/json -[submodule "packager/third_party/mbedtls"] +[submodule "packager/third_party/mbedtls/source"] path = packager/third_party/mbedtls/source url = https://github.com/Mbed-TLS/mbedtls +[submodule "packager/third_party/zlib/source"] + path = packager/third_party/zlib/source + url = https://github.com/joeyparrish/zlib +[submodule "packager/third_party/libpng/source"] + path = packager/third_party/libpng/source + url = https://github.com/glennrp/libpng +[submodule "packager/third_party/libwebm/source"] + path = packager/third_party/libwebm/source + url = https://github.com/webmproject/libwebm +[submodule "packager/third_party/libxml2/source"] + path = packager/third_party/libxml2/source + url = https://gitlab.gnome.org/GNOME/libxml2 +[submodule "packager/third_party/protobuf/source"] + path = packager/third_party/protobuf/source + url = https://github.com/protocolbuffers/protobuf diff --git a/packager/third_party/CMakeLists.txt b/packager/third_party/CMakeLists.txt index 84fa4160f0..b241268553 100644 --- a/packager/third_party/CMakeLists.txt +++ b/packager/third_party/CMakeLists.txt @@ -31,4 +31,9 @@ add_subdirectory(curl EXCLUDE_FROM_ALL) add_subdirectory(glog EXCLUDE_FROM_ALL) add_subdirectory(googletest EXCLUDE_FROM_ALL) add_subdirectory(json EXCLUDE_FROM_ALL) +add_subdirectory(libpng EXCLUDE_FROM_ALL) +add_subdirectory(libwebm EXCLUDE_FROM_ALL) +add_subdirectory(libxml2 EXCLUDE_FROM_ALL) add_subdirectory(mbedtls EXCLUDE_FROM_ALL) +add_subdirectory(protobuf EXCLUDE_FROM_ALL) +add_subdirectory(zlib EXCLUDE_FROM_ALL) diff --git a/packager/third_party/abseil-cpp/CMakeLists.txt b/packager/third_party/abseil-cpp/CMakeLists.txt index 293bd455e2..1f504645d8 100644 --- a/packager/third_party/abseil-cpp/CMakeLists.txt +++ b/packager/third_party/abseil-cpp/CMakeLists.txt @@ -6,8 +6,6 @@ # CMake build file to host abseil-cpp configuration. -# Variables that must be defined for third-party libraries. - # This will be the new default, so turn it on now to suppress a warning. set(ABSL_PROPAGATE_CXX_STD ON) diff --git a/packager/third_party/glog/CMakeLists.txt b/packager/third_party/glog/CMakeLists.txt index 5a54dd0805..33e0c510e7 100644 --- a/packager/third_party/glog/CMakeLists.txt +++ b/packager/third_party/glog/CMakeLists.txt @@ -15,5 +15,10 @@ set(WITH_GTEST OFF) # Don't depend on or search for libunwind. set(WITH_UNWIND OFF) +# Disable this warning/error, which occurs in demangle.c on macOS: +if(NOT MSVC) + add_compile_options(-Wno-shorten-64-to-32) +endif() + # With these set in scope of this folder, load the library's own CMakeLists.txt. add_subdirectory(source) diff --git a/packager/third_party/json/CMakeLists.txt b/packager/third_party/json/CMakeLists.txt new file mode 100644 index 0000000000..0fd61fa5f6 --- /dev/null +++ b/packager/third_party/json/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright 2022 Google LLC. All rights reserved. +# +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file or at +# https://developers.google.com/open-source/licenses/bsd + +# CMake build file to host the nlohmann json library configuration. + +# No configuration is currently required. + +# With these set in scope of this folder, load the library's own CMakeLists.txt. +add_subdirectory(source) diff --git a/packager/third_party/json b/packager/third_party/json/source similarity index 100% rename from packager/third_party/json rename to packager/third_party/json/source diff --git a/packager/third_party/libpng/CMakeLists.txt b/packager/third_party/libpng/CMakeLists.txt new file mode 100644 index 0000000000..9dbc5f29c1 --- /dev/null +++ b/packager/third_party/libpng/CMakeLists.txt @@ -0,0 +1,30 @@ +# Copyright 2022 Google LLC. All rights reserved. +# +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file or at +# https://developers.google.com/open-source/licenses/bsd + +# CMake build file to host libpng configuration. + +# Turn these features on. +set(PNG_STATIC ON) +set(PNG_HARDWARE_OPTIMIZATIONS ON) + +# Turn these features off. +set(PNG_SHARED OFF) +set(PNG_TESTS OFF) +set(PNG_FRAMEWORK OFF) +set(PNG_DEBUG OFF) + +# Don't install anything. +set(SKIP_INSTALL_ALL ON) + +# A confusing name, but this means "let us tell you where to find zlib". +set(PNG_BUILD_ZLIB ON) +# Tell libpng where to find zlib headers. +set(ZLIB_INCLUDE_DIR ../zlib/source/) +# Tell libpng where to find zlib library to link to. +set(ZLIB_LIBRARY zlibstatic) + +# With these set in scope of this folder, load the library's own CMakeLists.txt. +add_subdirectory(source) diff --git a/packager/third_party/libpng/libpng.gyp b/packager/third_party/libpng/libpng.gyp deleted file mode 100644 index e9a4648498..0000000000 --- a/packager/third_party/libpng/libpng.gyp +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright 2020 Google LLC. All rights reserved. -# -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file or at -# https://developers.google.com/open-source/licenses/bsd - -{ - 'targets': [ - { - 'target_name': 'libpng', - 'type': 'static_library', - 'sources': [ - 'src/png.c', - 'src/pngerror.c', - 'src/pngget.c', - 'src/pngmem.c', - 'src/pngpread.c', - 'src/pngread.c', - 'src/pngrio.c', - 'src/pngrtran.c', - 'src/pngrutil.c', - 'src/pngset.c', - 'src/pngtrans.c', - 'src/pngwio.c', - 'src/pngwrite.c', - 'src/pngwtran.c', - 'src/pngwutil.c', - ], - 'include_dirs': [ - '.', - 'src', - ], - 'dependencies': [ - '../zlib/zlib.gyp:zlib', - ], - # Disable all CPU-specific optimizations, which may fail to link because - # we don't have a CPU-specific set of source files. - 'defines': [ - 'PNG_ARM_NEON_OPT=0', - 'PNG_INTEL_SSE_OPT=0', - 'PNG_MIPS_MSA_OPT=0', - 'PNG_POWERPC_VSX_OPT=0', - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '.', - 'src', - ], - }, - }, - ], -} diff --git a/packager/third_party/libpng/pnglibconf.h b/packager/third_party/libpng/pnglibconf.h deleted file mode 100644 index 702aad8a8a..0000000000 --- a/packager/third_party/libpng/pnglibconf.h +++ /dev/null @@ -1,219 +0,0 @@ -/* pnglibconf.h - library build configuration */ - -/* libpng version 1.6.37 */ - -/* Copyright (c) 2018-2019 Cosmin Truta */ -/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ - -/* This code is released under the libpng license. */ -/* For conditions of distribution and use, see the disclaimer */ -/* and license in png.h */ - -/* pnglibconf.h */ -/* Machine generated file: DO NOT EDIT */ -/* Derived from: scripts/pnglibconf.dfa */ -#ifndef PNGLCONF_H -#define PNGLCONF_H -/* options */ -#define PNG_16BIT_SUPPORTED -#define PNG_ALIGNED_MEMORY_SUPPORTED -/*#undef PNG_ARM_NEON_API_SUPPORTED*/ -/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ -#define PNG_BENIGN_ERRORS_SUPPORTED -#define PNG_BENIGN_READ_ERRORS_SUPPORTED -/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ -#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_COLORSPACE_SUPPORTED -#define PNG_CONSOLE_IO_SUPPORTED -#define PNG_CONVERT_tIME_SUPPORTED -#define PNG_EASY_ACCESS_SUPPORTED -/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ -#define PNG_ERROR_TEXT_SUPPORTED -#define PNG_FIXED_POINT_SUPPORTED -#define PNG_FLOATING_ARITHMETIC_SUPPORTED -#define PNG_FLOATING_POINT_SUPPORTED -#define PNG_FORMAT_AFIRST_SUPPORTED -#define PNG_FORMAT_BGR_SUPPORTED -#define PNG_GAMMA_SUPPORTED -#define PNG_GET_PALETTE_MAX_SUPPORTED -#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -#define PNG_INCH_CONVERSIONS_SUPPORTED -#define PNG_INFO_IMAGE_SUPPORTED -#define PNG_IO_STATE_SUPPORTED -#define PNG_MNG_FEATURES_SUPPORTED -#define PNG_POINTER_INDEXING_SUPPORTED -/*#undef PNG_POWERPC_VSX_API_SUPPORTED*/ -/*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/ -#define PNG_PROGRESSIVE_READ_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED -#define PNG_READ_ALPHA_MODE_SUPPORTED -#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_READ_BACKGROUND_SUPPORTED -#define PNG_READ_BGR_SUPPORTED -#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_READ_COMPOSITE_NODIV_SUPPORTED -#define PNG_READ_COMPRESSED_TEXT_SUPPORTED -#define PNG_READ_EXPAND_16_SUPPORTED -#define PNG_READ_EXPAND_SUPPORTED -#define PNG_READ_FILLER_SUPPORTED -#define PNG_READ_GAMMA_SUPPORTED -#define PNG_READ_GET_PALETTE_MAX_SUPPORTED -#define PNG_READ_GRAY_TO_RGB_SUPPORTED -#define PNG_READ_INTERLACING_SUPPORTED -#define PNG_READ_INT_FUNCTIONS_SUPPORTED -#define PNG_READ_INVERT_ALPHA_SUPPORTED -#define PNG_READ_INVERT_SUPPORTED -#define PNG_READ_OPT_PLTE_SUPPORTED -#define PNG_READ_PACKSWAP_SUPPORTED -#define PNG_READ_PACK_SUPPORTED -#define PNG_READ_QUANTIZE_SUPPORTED -#define PNG_READ_RGB_TO_GRAY_SUPPORTED -#define PNG_READ_SCALE_16_TO_8_SUPPORTED -#define PNG_READ_SHIFT_SUPPORTED -#define PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_STRIP_ALPHA_SUPPORTED -#define PNG_READ_SUPPORTED -#define PNG_READ_SWAP_ALPHA_SUPPORTED -#define PNG_READ_SWAP_SUPPORTED -#define PNG_READ_TEXT_SUPPORTED -#define PNG_READ_TRANSFORMS_SUPPORTED -#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_READ_USER_CHUNKS_SUPPORTED -#define PNG_READ_USER_TRANSFORM_SUPPORTED -#define PNG_READ_bKGD_SUPPORTED -#define PNG_READ_cHRM_SUPPORTED -#define PNG_READ_eXIf_SUPPORTED -#define PNG_READ_gAMA_SUPPORTED -#define PNG_READ_hIST_SUPPORTED -#define PNG_READ_iCCP_SUPPORTED -#define PNG_READ_iTXt_SUPPORTED -#define PNG_READ_oFFs_SUPPORTED -#define PNG_READ_pCAL_SUPPORTED -#define PNG_READ_pHYs_SUPPORTED -#define PNG_READ_sBIT_SUPPORTED -#define PNG_READ_sCAL_SUPPORTED -#define PNG_READ_sPLT_SUPPORTED -#define PNG_READ_sRGB_SUPPORTED -#define PNG_READ_tEXt_SUPPORTED -#define PNG_READ_tIME_SUPPORTED -#define PNG_READ_tRNS_SUPPORTED -#define PNG_READ_zTXt_SUPPORTED -#define PNG_SAVE_INT_32_SUPPORTED -#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SEQUENTIAL_READ_SUPPORTED -#define PNG_SETJMP_SUPPORTED -#define PNG_SET_OPTION_SUPPORTED -#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SET_USER_LIMITS_SUPPORTED -#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED -#define PNG_SIMPLIFIED_READ_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_SUPPORTED -#define PNG_STDIO_SUPPORTED -#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_TEXT_SUPPORTED -#define PNG_TIME_RFC1123_SUPPORTED -#define PNG_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_USER_CHUNKS_SUPPORTED -#define PNG_USER_LIMITS_SUPPORTED -#define PNG_USER_MEM_SUPPORTED -#define PNG_USER_TRANSFORM_INFO_SUPPORTED -#define PNG_USER_TRANSFORM_PTR_SUPPORTED -#define PNG_WARNINGS_SUPPORTED -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_WRITE_BGR_SUPPORTED -#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -#define PNG_WRITE_FILLER_SUPPORTED -#define PNG_WRITE_FILTER_SUPPORTED -#define PNG_WRITE_FLUSH_SUPPORTED -#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED -#define PNG_WRITE_INTERLACING_SUPPORTED -#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED -#define PNG_WRITE_INVERT_ALPHA_SUPPORTED -#define PNG_WRITE_INVERT_SUPPORTED -#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED -#define PNG_WRITE_PACKSWAP_SUPPORTED -#define PNG_WRITE_PACK_SUPPORTED -#define PNG_WRITE_SHIFT_SUPPORTED -#define PNG_WRITE_SUPPORTED -#define PNG_WRITE_SWAP_ALPHA_SUPPORTED -#define PNG_WRITE_SWAP_SUPPORTED -#define PNG_WRITE_TEXT_SUPPORTED -#define PNG_WRITE_TRANSFORMS_SUPPORTED -#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_WRITE_USER_TRANSFORM_SUPPORTED -#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#define PNG_WRITE_bKGD_SUPPORTED -#define PNG_WRITE_cHRM_SUPPORTED -#define PNG_WRITE_eXIf_SUPPORTED -#define PNG_WRITE_gAMA_SUPPORTED -#define PNG_WRITE_hIST_SUPPORTED -#define PNG_WRITE_iCCP_SUPPORTED -#define PNG_WRITE_iTXt_SUPPORTED -#define PNG_WRITE_oFFs_SUPPORTED -#define PNG_WRITE_pCAL_SUPPORTED -#define PNG_WRITE_pHYs_SUPPORTED -#define PNG_WRITE_sBIT_SUPPORTED -#define PNG_WRITE_sCAL_SUPPORTED -#define PNG_WRITE_sPLT_SUPPORTED -#define PNG_WRITE_sRGB_SUPPORTED -#define PNG_WRITE_tEXt_SUPPORTED -#define PNG_WRITE_tIME_SUPPORTED -#define PNG_WRITE_tRNS_SUPPORTED -#define PNG_WRITE_zTXt_SUPPORTED -#define PNG_bKGD_SUPPORTED -#define PNG_cHRM_SUPPORTED -#define PNG_eXIf_SUPPORTED -#define PNG_gAMA_SUPPORTED -#define PNG_hIST_SUPPORTED -#define PNG_iCCP_SUPPORTED -#define PNG_iTXt_SUPPORTED -#define PNG_oFFs_SUPPORTED -#define PNG_pCAL_SUPPORTED -#define PNG_pHYs_SUPPORTED -#define PNG_sBIT_SUPPORTED -#define PNG_sCAL_SUPPORTED -#define PNG_sPLT_SUPPORTED -#define PNG_sRGB_SUPPORTED -#define PNG_tEXt_SUPPORTED -#define PNG_tIME_SUPPORTED -#define PNG_tRNS_SUPPORTED -#define PNG_zTXt_SUPPORTED -/* end of options */ -/* settings */ -#define PNG_API_RULE 0 -#define PNG_DEFAULT_READ_MACROS 1 -#define PNG_GAMMA_THRESHOLD_FIXED 5000 -#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE -#define PNG_INFLATE_BUF_SIZE 1024 -#define PNG_LINKAGE_API extern -#define PNG_LINKAGE_CALLBACK extern -#define PNG_LINKAGE_DATA extern -#define PNG_LINKAGE_FUNCTION extern -#define PNG_MAX_GAMMA_8 11 -#define PNG_QUANTIZE_BLUE_BITS 5 -#define PNG_QUANTIZE_GREEN_BITS 5 -#define PNG_QUANTIZE_RED_BITS 5 -#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) -#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 -#define PNG_USER_CHUNK_CACHE_MAX 1000 -#define PNG_USER_CHUNK_MALLOC_MAX 8000000 -#define PNG_USER_HEIGHT_MAX 1000000 -#define PNG_USER_WIDTH_MAX 1000000 -#define PNG_ZBUF_SIZE 8192 -#define PNG_ZLIB_VERNUM 0x1280 -#define PNG_Z_DEFAULT_COMPRESSION (-1) -#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 -#define PNG_Z_DEFAULT_STRATEGY 1 -#define PNG_sCAL_PRECISION 5 -#define PNG_sRGB_PROFILE_CHECKS 2 -/* end of settings */ -#endif /* PNGLCONF_H */ diff --git a/packager/third_party/libpng/source b/packager/third_party/libpng/source new file mode 160000 index 0000000000..a40189cf88 --- /dev/null +++ b/packager/third_party/libpng/source @@ -0,0 +1 @@ +Subproject commit a40189cf881e9f0db80511c382292a5604c3c3d1 diff --git a/packager/third_party/libwebm/CMakeLists.txt b/packager/third_party/libwebm/CMakeLists.txt new file mode 100644 index 0000000000..c988ab0280 --- /dev/null +++ b/packager/third_party/libwebm/CMakeLists.txt @@ -0,0 +1,20 @@ +# Copyright 2022 Google LLC. All rights reserved. +# +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file or at +# https://developers.google.com/open-source/licenses/bsd + +# CMake build file to host libwebm configuration. + +# Enable warnings-as-errors. +set(ENABLE_WERROR ON) + +# Disable these settings, none of which we need. +set(ENABLE_WEBMTS OFF) +set(ENABLE_WEBMINFO OFF) +set(ENABLE_TESTS OFF) +set(ENABLE_IWYU OFF) +set(ENABLE_WEBM_PARSER OFF) + +# With these set in scope of this folder, load the library's own CMakeLists.txt. +add_subdirectory(source) diff --git a/packager/third_party/libwebm/libwebm.gyp b/packager/third_party/libwebm/libwebm.gyp deleted file mode 100644 index 0d4bcabb48..0000000000 --- a/packager/third_party/libwebm/libwebm.gyp +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 2015 Google Inc. All rights reserved. -# -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file or at -# https://developers.google.com/open-source/licenses/bsd - -{ - 'includes': [ - ], - 'targets': [ - { - 'target_name': 'mkvmuxer', - 'type': 'static_library', - 'sources': [ - 'src/common/webmids.h', - 'src/mkvmuxer/mkvmuxer.cc', - 'src/mkvmuxer/mkvmuxer.h', - 'src/mkvmuxer/mkvmuxertypes.h', - 'src/mkvmuxer/mkvmuxerutil.cc', - 'src/mkvmuxer/mkvmuxerutil.h', - 'src/mkvmuxer/mkvwriter.cc', - 'src/mkvmuxer/mkvwriter.h', - 'src/mkvmuxer.hpp' - 'src/mkvmuxerutil.hpp' - 'src/webmids.hpp' - ], - 'include_dirs': [ - 'src', - ], - 'direct_dependent_settings': { - 'include_dirs': [ - 'src', - ], - }, - }, - ], -} diff --git a/packager/third_party/libwebm/source b/packager/third_party/libwebm/source new file mode 160000 index 0000000000..82a1d2330e --- /dev/null +++ b/packager/third_party/libwebm/source @@ -0,0 +1 @@ +Subproject commit 82a1d2330e113a14e545d806eb5419f09374255f diff --git a/packager/third_party/libxml2/CMakeLists.txt b/packager/third_party/libxml2/CMakeLists.txt new file mode 100644 index 0000000000..e0c01d8415 --- /dev/null +++ b/packager/third_party/libxml2/CMakeLists.txt @@ -0,0 +1,62 @@ +# Copyright 2022 Google LLC. All rights reserved. +# +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file or at +# https://developers.google.com/open-source/licenses/bsd + +# CMake build file to host libxml2 configuration. + +# Turn these features off. +set(BUILD_SHARED_LIBS OFF) +set(LIBXML2_WITH_C14N OFF) +set(LIBXML2_WITH_CATALOG OFF) +set(LIBXML2_WITH_DEBUG OFF) +set(LIBXML2_WITH_FTP OFF) +set(LIBXML2_WITH_HTML OFF) +set(LIBXML2_WITH_HTTP OFF) +set(LIBXML2_WITH_ICONV OFF) +set(LIBXML2_WITH_ICU OFF) +set(LIBXML2_WITH_ISO8859X OFF) +set(LIBXML2_WITH_LEGACY OFF) +set(LIBXML2_WITH_LZMA OFF) +set(LIBXML2_WITH_MEM_DEBUG OFF) +set(LIBXML2_WITH_MODULES OFF) +set(LIBXML2_WITH_OUTPUT OFF) +set(LIBXML2_WITH_PATTERN OFF) +set(LIBXML2_WITH_PROGRAMS OFF) +set(LIBXML2_WITH_PUSH OFF) +set(LIBXML2_WITH_PYTHON OFF) +set(LIBXML2_WITH_READER OFF) +set(LIBXML2_WITH_REGEXPS OFF) +set(LIBXML2_WITH_RUN_DEBUG OFF) +set(LIBXML2_WITH_SAX1 OFF) +set(LIBXML2_WITH_SCHEMAS OFF) +set(LIBXML2_WITH_SCHEMATRON OFF) +set(LIBXML2_WITH_TESTS OFF) +set(LIBXML2_WITH_THREAD_ALLOC OFF) +set(LIBXML2_WITH_TRIO OFF) +set(LIBXML2_WITH_UNICODE OFF) +set(LIBXML2_WITH_VALID OFF) +set(LIBXML2_WITH_WRITER OFF) +set(LIBXML2_WITH_XINCLUDE OFF) +set(LIBXML2_WITH_XPATH OFF) +set(LIBXML2_WITH_XPTR OFF) +set(LIBXML2_WITH_XPTR_LOCS OFF) +set(LIBXML2_WITH_ZLIB OFF) + +# Turn these features on. Note that it fails to build with THREADS turned off. +set(LIBXML2_WITH_THREADS ON) +set(LIBXML2_WITH_TREE ON) + +# Disable this warning/error, which occurs in buf.c: +add_compile_options(-Wno-format-extra-args) +# Disable this warning/error, which occurs in encoding.c: +add_compile_options(-Wno-unused-but-set-variable) +# Disable this warning/error, which occurs in xmlIO.c: +add_compile_options(-Wno-unused-parameter) + +# With these set in scope of this folder, load the library's own CMakeLists.txt. +add_subdirectory(source) + +# Their CMakeLists.txt use a weird case for the library. Alias it. +add_library(libxml2 ALIAS LibXml2) diff --git a/packager/third_party/libxml2/source b/packager/third_party/libxml2/source new file mode 160000 index 0000000000..7846b0a677 --- /dev/null +++ b/packager/third_party/libxml2/source @@ -0,0 +1 @@ +Subproject commit 7846b0a677f8d3ce72486125fa281e92ac9970e8 diff --git a/packager/third_party/protobuf/CMakeLists.txt b/packager/third_party/protobuf/CMakeLists.txt new file mode 100644 index 0000000000..ce8d419913 --- /dev/null +++ b/packager/third_party/protobuf/CMakeLists.txt @@ -0,0 +1,37 @@ +# Copyright 2022 Google LLC. All rights reserved. +# +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file or at +# https://developers.google.com/open-source/licenses/bsd + +# CMake build file to host protobuf configuration. + +# Turn these features off. +set(protobuf_INSTALL OFF) +set(protobuf_BUILD_TESTS OFF) +set(protobuf_BUILD_CONFORMANCE OFF) +set(protobuf_BUILD_EXAMPLES OFF) +set(protobuf_BUILD_LIBPROTOC OFF) +set(protobuf_BUILD_SHARED_LIBS OFF) +set(protobuf_WITH_ZLIB OFF) + +# Turn these features on. +set(protobuf_BUILD_PROTOC_BINARIES ON) +set(protobuf_DISABLE_RTTI ON) + +# Disable this error/warning, which occurs in +# src/google/protobuf/stubs/stringprintf.cc: +add_compile_options(-Wno-sign-compare) +# Disable this error/warning, which occurs in +# src/google/protobuf/compiler/cpp/parse_function_generator.cc: +add_compile_options(-Wno-missing-field-initializers) +# There are several interfaces with ununused parameters. +add_compile_options(-Wno-unused-parameter) +# There are also redundant move calls. +add_compile_options(-Wno-redundant-move) +# Disable internal debugging features, which end up triggering further compiler +# errors. +add_definitions(-DNDEBUG) + +# With these set in scope of this folder, load the library's own CMakeLists.txt. +add_subdirectory(source) diff --git a/packager/third_party/protobuf/source b/packager/third_party/protobuf/source new file mode 160000 index 0000000000..c9869dc780 --- /dev/null +++ b/packager/third_party/protobuf/source @@ -0,0 +1 @@ +Subproject commit c9869dc7803eb0a21d7e589c40ff4f9288cd34ae diff --git a/packager/third_party/zlib/CMakeLists.txt b/packager/third_party/zlib/CMakeLists.txt new file mode 100644 index 0000000000..60859d6246 --- /dev/null +++ b/packager/third_party/zlib/CMakeLists.txt @@ -0,0 +1,21 @@ +# Copyright 2022 Google LLC. All rights reserved. +# +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file or at +# https://developers.google.com/open-source/licenses/bsd + +# CMake build file to host zlib configuration. + +# Tell zlib's build system not to rename zconf.h, which would leave the +# submodule in an unclean state. +set(RENAME_ZCONF OFF) + +# Don't install anything. +set(SKIP_INSTALL_ALL ON) + +# The configuration for x64 assembly in zlib's CMakeLists.txt doesn't seem to +# work, as the assembly files aren't in the repo for some reason. So don't set +# the AMD64 flag. + +# With these set in scope of this folder, load the library's own CMakeLists.txt. +add_subdirectory(source) diff --git a/packager/third_party/zlib/fork.md b/packager/third_party/zlib/fork.md new file mode 100644 index 0000000000..29603b6918 --- /dev/null +++ b/packager/third_party/zlib/fork.md @@ -0,0 +1,18 @@ +# zlib fork + +This uses a fork of zlib, which is at +https://github.com/joeyparrish/zlib/tree/preview + +We forked from upstream https://github.com/madler/zlib and merged the following +PRs: + + - https://github.com/madler/zlib/pull/519, which contains code from + https://github.com/Togtja/zlib/tree/optional_zconf_rename. This gives us an + option to disable zlib's default CMake behavior of modifying the working + directory during configuration. This helps to keep the submodule clean. + + - https://github.com/madler/zlib/pull/691, which contains code from + https://github.com/joeyparrish/zlib/tree/optional_tests. This gives us a + way to disable zlib's test targets. + +When these PRs are merged, the fork can be deleted. diff --git a/packager/third_party/zlib/source b/packager/third_party/zlib/source new file mode 160000 index 0000000000..59acdd06fd --- /dev/null +++ b/packager/third_party/zlib/source @@ -0,0 +1 @@ +Subproject commit 59acdd06fd89fee1f91a464373b1afd964f810a8 diff --git a/packager/tools/generate_license_notice.py b/packager/tools/generate_license_notice.py index d90c818ce4..f595abb514 100755 --- a/packager/tools/generate_license_notice.py +++ b/packager/tools/generate_license_notice.py @@ -13,34 +13,18 @@ import sys LICENSE_FILES = set(['LICENSE', 'LICENSE.TXT', 'COPYING']) PRUNE_PATHS = [ - # Identical to third_party/icu. - os.path.join('base', 'third_party', 'icu'), + # Used for testing, not in the binary build. + os.path.join('third_party', 'json'), + os.path.join('third_party', 'googletest'), - # Comes with Chromium base, not used in packager. - os.path.join('base', 'third_party', 'libevent'), - os.path.join('base', 'third_party', 'nspr'), - os.path.join('base', 'third_party', 'superfasthash'), - os.path.join('base', 'third_party', 'xdg_mime'), - os.path.join('base', 'third_party', 'xdg_user_dirs'), + # Dependencies of dependencies, not actually used in Packager. + os.path.join('third_party', 'libpng', 'source', 'contrib'), - # Used for development and test, not in the binary build. - os.path.join('buildtools', 'third_party', 'libc++', 'trunk', 'utils', - 'google-benchmark'), - os.path.join('testing', 'gmock'), - os.path.join('testing', 'gtest'), - os.path.join('third_party', 'binutils'), - os.path.join('third_party', 'boringssl', 'src', 'third_party', - 'googletest'), - os.path.join('third_party', 'gold'), - os.path.join('tools', 'gyp'), + # The Java side of icu, not used in Packager. + os.path.join('third_party', 'icu', 'source', 'icu4j'), - # Comes with Boringssl, not used in packager. - os.path.join('third_party', 'boringssl', 'src', 'third_party', - 'android-cmake'), - # Comes with ICU, not used in packager. + # Misc. ICU scripts, not used in Packager. os.path.join('third_party', 'icu', 'scripts'), - # Required by Chromium base, but not used in packager. - os.path.join('third_party', 'libevent'), ] CC_FILE_TEMPLATE = """