rbe-tebako 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +4 -0
  3. data/Brewfile +23 -0
  4. data/CMakeLists.txt +464 -0
  5. data/CODE_OF_CONDUCT.adoc +128 -0
  6. data/CONTRIBUTING.adoc +294 -0
  7. data/Gemfile +31 -0
  8. data/INSTALLATION.adoc +233 -0
  9. data/LICENSE.md +33 -0
  10. data/README.adoc +1363 -0
  11. data/Rakefile +35 -0
  12. data/bin/console +15 -0
  13. data/bin/setup +8 -0
  14. data/cmake/copy_dir.cmake +29 -0
  15. data/common.env +5 -0
  16. data/exe/rbe-tebako +32 -0
  17. data/exe/rbe-tebako-packager +77 -0
  18. data/include/tebako/tebako-fs.h +43 -0
  19. data/include/tebako/tebako-main.h +42 -0
  20. data/include/tebako/tebako-prism.h +51 -0
  21. data/lib/rbe-tebako.rb +6 -0
  22. data/lib/tebako/build_helpers.rb +77 -0
  23. data/lib/tebako/cache_manager.rb +112 -0
  24. data/lib/tebako/cli.rb +220 -0
  25. data/lib/tebako/cli_helpers.rb +165 -0
  26. data/lib/tebako/codegen.rb +252 -0
  27. data/lib/tebako/deploy_helper.rb +258 -0
  28. data/lib/tebako/error.rb +70 -0
  29. data/lib/tebako/options_manager.rb +338 -0
  30. data/lib/tebako/package_descriptor.rb +143 -0
  31. data/lib/tebako/packager/pass1_patch.rb +266 -0
  32. data/lib/tebako/packager/pass1a_patch.rb +55 -0
  33. data/lib/tebako/packager/pass2_patch.rb +140 -0
  34. data/lib/tebako/packager/pass2_patch_crt.rb +46 -0
  35. data/lib/tebako/packager/pass2msys_patch.rb +190 -0
  36. data/lib/tebako/packager/patch.rb +54 -0
  37. data/lib/tebako/packager/patch_buildsystem.rb +124 -0
  38. data/lib/tebako/packager/patch_helpers.rb +109 -0
  39. data/lib/tebako/packager/patch_libraries.rb +188 -0
  40. data/lib/tebako/packager/patch_literals.rb +275 -0
  41. data/lib/tebako/packager/patch_main.rb +93 -0
  42. data/lib/tebako/packager/rubygems_patch.rb +83 -0
  43. data/lib/tebako/packager.rb +210 -0
  44. data/lib/tebako/packager_lite.rb +78 -0
  45. data/lib/tebako/ruby_builder.rb +71 -0
  46. data/lib/tebako/ruby_version.rb +206 -0
  47. data/lib/tebako/scenario_manager.rb +251 -0
  48. data/lib/tebako/stripper.rb +135 -0
  49. data/lib/tebako/version.rb +30 -0
  50. data/lib/tebako.rb +34 -0
  51. data/src/tebako-main.cpp +168 -0
  52. data/tools/.gitattributes +4 -0
  53. data/tools/.github/workflows/build-containers.yml +190 -0
  54. data/tools/.github/workflows/lint.yml +41 -0
  55. data/tools/.github/workflows/test.yml +331 -0
  56. data/tools/.gitignore +1 -0
  57. data/tools/README.md +49 -0
  58. data/tools/ci-scripts/arm-brew-install.sh +43 -0
  59. data/tools/ci-scripts/arm-brew-setup.sh +33 -0
  60. data/tools/ci-scripts/level-up.sh +35 -0
  61. data/tools/ci-scripts/patch-fbthrift.sh +94 -0
  62. data/tools/ci-scripts/patch-folly.sh +551 -0
  63. data/tools/ci-scripts/patch-glog.sh +57 -0
  64. data/tools/ci-scripts/patch-zstd.sh +57 -0
  65. data/tools/ci-scripts/tools.sh +63 -0
  66. data/tools/ci-scripts/x86-brew-install.sh +43 -0
  67. data/tools/ci-scripts/x86-brew-setup.sh +33 -0
  68. data/tools/cmake-scripts/def-external-project.cmake +96 -0
  69. data/tools/cmake-scripts/macos-environment.cmake +91 -0
  70. data/tools/cmake-scripts/msys-environment.cmake +78 -0
  71. data/tools/cmake-scripts/setup-libarchive.cmake +93 -0
  72. data/tools/cmake-scripts/setup-libfmt.cmake +61 -0
  73. data/tools/cmake-scripts/setup-libhowardhinnerdate.cmake +55 -0
  74. data/tools/cmake-scripts/setup-libutfcpp.cmake +56 -0
  75. data/tools/cmake-scripts/version.cmake +162 -0
  76. data/tools/docker/alpine-3.17-dev.Dockerfile +49 -0
  77. data/tools/docker/tools/tools.sh +66 -0
  78. data/tools/docker/ubuntu-20.04-dev.Dockerfile +51 -0
  79. data/tools/dwarfs-test-helper/CMakeLists.txt +34 -0
  80. data/tools/include/pro-statvfs.h +57 -0
  81. data/tools/tests/cmake/CMakeLists.txt +81 -0
  82. data/tools/tests/setup-libfmt/CMakeLists.txt +35 -0
  83. data/tools/tests/setup-libhowardhinnerdate/CMakeLists.txt +35 -0
  84. data/tools/tests/setup-librachive/CMakeLists.txt +35 -0
  85. data/tools/tests/setup-libutfcpp/CMakeLists.txt +36 -0
  86. data/tools/tests/setup-openssl/CMakeLists.txt +36 -0
  87. metadata +312 -0
@@ -0,0 +1,63 @@
1
+ #!/bin/bash
2
+ # Copyright (c) 2023-2025 [Ribose Inc](https://www.ribose.com).
3
+ # All rights reserved.
4
+ # This file is a part of the Tebako project.
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
+ # modification, are permitted provided that the following conditions
8
+ # are met:
9
+ # 1. Redistributions of source code must retain the above copyright
10
+ # notice, this list of conditions and the following disclaimer.
11
+ # 2. Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in the
13
+ # documentation and/or other materials provided with the distribution.
14
+ #
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
19
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ # POSSIBILITY OF SUCH DAMAGE.
26
+
27
+ set -o errexit -o pipefail -o noclobber -o nounset
28
+
29
+ : "${LOCAL_BUILDS:=/tmp/local_builds}"
30
+ : "${LOCAL_INSTALLS:=/opt}"
31
+ : "${CMAKE_VERSION:=3.26.5}"
32
+ : "${LIBARCHIVE_VERSION:=3.6.2}"
33
+ : "${ARCH:=linux-x86_64}"
34
+
35
+ install_cmake() {
36
+ echo "Running install_cmake version ${CMAKE_VERSION} for ${ARCH}"
37
+ local cmake_install="${LOCAL_BUILDS}/cmake"
38
+ mkdir -p "${cmake_install}"
39
+ pushd "${cmake_install}"
40
+ wget "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-${ARCH}.sh"
41
+ chmod +x "cmake-${CMAKE_VERSION}-${ARCH}.sh"
42
+ "./cmake-${CMAKE_VERSION}-${ARCH}.sh" --skip-license --prefix=/usr
43
+ popd
44
+ rm -rf "${cmake_install}"
45
+ }
46
+
47
+ build_and_install_libarchive() {
48
+ echo "Running build_and_install_libarchive version $LIBARCHIVE_VERSION"
49
+ local libarchive_build="$LOCAL_BUILDS/libarchive"
50
+ mkdir -p "$libarchive_build"
51
+ pushd "$libarchive_build"
52
+ wget "https://github.com/libarchive/libarchive/releases/download/v$LIBARCHIVE_VERSION/libarchive-$LIBARCHIVE_VERSION.tar.xz"
53
+ tar xf "libarchive-$LIBARCHIVE_VERSION.tar.xz"
54
+ cd "libarchive-$LIBARCHIVE_VERSION"
55
+ ./configure --prefix="$LOCAL_INSTALLS" --without-iconv --without-xml2 --without-expat
56
+ make -j8
57
+ make install
58
+ popd
59
+ rm -rf "$libarchive_build"
60
+ }
61
+
62
+ # shellcheck disable=SC2068
63
+ $@
@@ -0,0 +1,43 @@
1
+ #! /bin/bash
2
+ #
3
+ # Copyright (c) 2022-2025 [Ribose Inc](https://www.ribose.com).
4
+ # All rights reserved.
5
+ # This file is a part of the Tebako project.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions
9
+ # are met:
10
+ # 1. Redistributions of source code must retain the above copyright
11
+ # notice, this list of conditions and the following disclaimer.
12
+ # 2. Redistributions in binary form must reproduce the above copyright
13
+ # notice, this list of conditions and the following disclaimer in the
14
+ # documentation and/or other materials provided with the distribution.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
20
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
+ # POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ set -o errexit -o pipefail -o noclobber -o nounset
29
+
30
+ # for zsh
31
+ # https://stackoverflow.com/questions/6715388/variable-expansion-is-different-in-zsh-from-that-in-bash
32
+ # setopt sh_word_split
33
+
34
+ DIR0="$( cd "$1" && pwd )"
35
+ DIR1="$DIR0/x86-homebrew"
36
+
37
+ for bottle in "${@:2}"
38
+ do
39
+ echo "Installing $bottle"
40
+ response=$("$DIR1/bin/brew" fetch --force --bottle-tag=x86_64_big_sur "$bottle" | grep "Downloaded to")
41
+ IFS=" " read -r -a parsed <<< "$response"
42
+ "$DIR1/bin/brew" install "${parsed[2]}"
43
+ done
@@ -0,0 +1,33 @@
1
+ #! /bin/bash
2
+ #
3
+ # Copyright (c) 2022-2025 [Ribose Inc](https://www.ribose.com).
4
+ # All rights reserved.
5
+ # This file is a part of the Tebako project.
6
+ #
7
+ # Redistribution and use in source and binary forms, with or without
8
+ # modification, are permitted provided that the following conditions
9
+ # are met:
10
+ # 1. Redistributions of source code must retain the above copyright
11
+ # notice, this list of conditions and the following disclaimer.
12
+ # 2. Redistributions in binary form must reproduce the above copyright
13
+ # notice, this list of conditions and the following disclaimer in the
14
+ # documentation and/or other materials provided with the distribution.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
20
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
+ # POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ set -o errexit -o pipefail -o noclobber -o nounset
29
+
30
+ DIR0="$( cd "$1" && pwd )"
31
+ DIR1="$DIR0/x86-homebrew"
32
+ mkdir "$DIR1"
33
+ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "$DIR1"
@@ -0,0 +1,96 @@
1
+ # Copyright (c) 2021-2025 [Ribose Inc](https://www.ribose.com).
2
+ # All rights reserved.
3
+ # This file is a part of the Tebako project.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions
7
+ # are met:
8
+ # 1. Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
18
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
+ # POSSIBILITY OF SUCH DAMAGE.
25
+
26
+
27
+ # ...................................................................
28
+ # DEF_EXT_PRJ_T
29
+ # This function defines version number and archieve hash for
30
+ # external project that is build from tarball
31
+ # For external project XXX this function will set the following variables:
32
+ # XXX_VER -- package version
33
+ # XXX_HASH -- tarball hash
34
+ # Version and hash value come from environment variables (GHA case)
35
+ # If environment variables are not set then default values are used
36
+ # XXX_NAME = xxx (lowercase)
37
+ # XXX_PRJ = _xxx (lowercase) -- CMake ExternalProject name
38
+ # XXX_SOURCE_DIR = ${DEPS}/src/_xxx -- Source folder for ExternalProject_Add
39
+ # XXX_BINARY_DIR = ${DEPS}/src/_xxx-build -- Build folder for ExternalProject_Add
40
+
41
+ function(DEF_EXT_PRJ_T NAME DEFAULT_VER DEFAULT_HASH)
42
+ set(VER ${NAME}_VER)
43
+ if (DEFINED ENV{${VER}})
44
+ set(${VER} $ENV{${VER}} PARENT_SCOPE)
45
+ else ()
46
+ set(${VER} ${DEFAULT_VER} PARENT_SCOPE)
47
+ endif()
48
+
49
+ set(HASH ${NAME}_HASH)
50
+ if (DEFINED ENV{${HASH})
51
+ set(${HASH} $ENV{${HASH}} PARENT_SCOPE)
52
+ else()
53
+ set(${HASH} ${DEFAULT_HASH} PARENT_SCOPE)
54
+ endif()
55
+
56
+ set(R_NAME ${NAME}_NAME)
57
+ string(TOLOWER ${NAME} TMP)
58
+ set(${R_NAME} ${TMP} PARENT_SCOPE)
59
+ set(R_PRJ ${NAME}_PRJ)
60
+ set(${R_PRJ} _${TMP} PARENT_SCOPE)
61
+ set(R_DIR ${NAME}_SOURCE_DIR)
62
+ set(${R_DIR} ${DEPS}/src/_${TMP} PARENT_SCOPE)
63
+ set(R_DIR ${NAME}_BINARY_DIR)
64
+ set(${R_DIR} ${DEPS}/src/_${TMP}-build PARENT_SCOPE)
65
+ endfunction()
66
+
67
+ # ...................................................................
68
+ # DEF_EXT_PRJ_G
69
+ # This function defines git tag for external project that is build from git
70
+ # For external project XXX this function will set the following variables:
71
+ # XXX_TAG -- git tag
72
+ # Version and tag come from environment variables (GHA case)
73
+ # If environment variables are not set then default values are used
74
+ # XXX_NAME = xxx (lowercase)
75
+ # XXX_PRJ = _xxx (lowercase) -- CMake ExternalProject name
76
+ # XXX_SOURCE_DIR = ${DEPS}/src/_xxx -- Source folder for ExternalProject_Add
77
+ # XXX_BINARY_DIR = ${DEPS}/src/_xxx-build -- Build folder for ExternalProject_Add
78
+
79
+ function(DEF_EXT_PRJ_G NAME DEFAULT_TAG)
80
+ set(TAG ${NAME}_TAG)
81
+ if (DEFINED ENV{${TAG})
82
+ set(${TAG} $ENV{${TAG}} PARENT_SCOPE)
83
+ else()
84
+ set(${TAG} ${DEFAULT_TAG} PARENT_SCOPE)
85
+ endif()
86
+
87
+ set(R_NAME ${NAME}_NAME)
88
+ string(TOLOWER ${NAME} TMP)
89
+ set(${R_NAME} ${TMP} PARENT_SCOPE)
90
+ set(R_PRJ ${NAME}_PRJ)
91
+ set(${R_PRJ} _${TMP} PARENT_SCOPE)
92
+ set(R_DIR ${NAME}_SOURCE_DIR)
93
+ set(${R_DIR} ${DEPS}/src/_${TMP} PARENT_SCOPE)
94
+ set(R_DIR ${NAME}_BINARY_DIR)
95
+ set(${R_DIR} ${DEPS}/src/_${TMP}-build PARENT_SCOPE)
96
+ endfunction()
@@ -0,0 +1,91 @@
1
+ # Copyright (c) 2021-2025 [Ribose Inc](https://www.ribose.com).
2
+ # All rights reserved.
3
+ # This file is a part of the Tebako project.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions
7
+ # are met:
8
+ # 1. Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
18
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
+ # POSSIBILITY OF SUCH DAMAGE.
25
+ #
26
+
27
+ if (CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
28
+
29
+ function(find_and_set_homebrew_prefix package_name pkg_name executable_name)
30
+ execute_process(
31
+ COMMAND brew --prefix ${package_name}
32
+ RESULT_VARIABLE BREW_${pkg_name}_RESULT
33
+ OUTPUT_VARIABLE BREW_${pkg_name}_PREFIX_TMP
34
+ OUTPUT_STRIP_TRAILING_WHITESPACE
35
+ )
36
+ if (BREW_${pkg_name}_RESULT EQUAL 0 AND EXISTS "${BREW_${pkg_name}_PREFIX_TMP}")
37
+ set(BREW_${pkg_name}_PREFIX "${BREW_${pkg_name}_PREFIX_TMP}" CACHE PATH "${package_name} prefix")
38
+ message(STATUS "Found ${package_name} keg installed by Homebrew at ${BREW_${pkg_name}_PREFIX}")
39
+ set(${executable_name} "${BREW_${pkg_name}_PREFIX}/bin/${package_name}" CACHE FILEPATH "${executable_name} executable")
40
+ endif()
41
+ endfunction()
42
+
43
+
44
+ execute_process(
45
+ COMMAND brew --prefix
46
+ RESULT_VARIABLE BREW_PREFIX_RES
47
+ OUTPUT_VARIABLE BREW_PREFIX_TMP
48
+ OUTPUT_STRIP_TRAILING_WHITESPACE
49
+ )
50
+ if(NOT (BREW_PREFIX_RES EQUAL 0 AND EXISTS ${BREW_PREFIX_TMP}))
51
+ message(FATAL "Could not find build brew setup")
52
+ else()
53
+ set(BREW_PREFIX "${BREW_PREFIX_TMP}" CACHE PATH "Brew installation prefix")
54
+ endif()
55
+
56
+ message(STATUS "Using brew environment at ${BREW_PREFIX}")
57
+ # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.me
58
+ if(NOT DEFINED OPENSSL_VERSION)
59
+ set(OPENSSL_VERSION "3")
60
+ endif()
61
+ set(OPENSSL_ROOT_DIR "${BREW_PREFIX}/opt/openssl@${OPENSSL_VERSION}")
62
+ set(CMAKE_PREFIX_PATH "${BREW_PREFIX}")
63
+ include_directories("${OPENSSL_ROOT_DIR}/include")
64
+ include_directories("${BREW_PREFIX}/include")
65
+
66
+ # https://stackoverflow.com/questions/53877344/cannot-configure-cmake-to-look-for-homebrew-installed-version-of-bison
67
+ find_and_set_homebrew_prefix("bison" "BISON" "BISON_EXECUTABLE")
68
+ find_and_set_homebrew_prefix("flex" "FLEX" "FLEX_EXECUTABLE")
69
+ find_and_set_homebrew_prefix("bash" "BASH" "GNU_BASH")
70
+
71
+ # Suppress superfluous randlib warnings about "*.a" having no symbols on MacOSX.
72
+ set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
73
+ set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
74
+
75
+ if (CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
76
+ set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
77
+ endif (CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
78
+
79
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
80
+ set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
81
+ endif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
82
+
83
+ set(CMAKE_CXX_FLAGS "-DTARGET_OS_SIMULATOR=0 -DTARGET_OS_IPHONE=0")
84
+
85
+ set(BUILD_CMAKE_ARGUMENTS -DCMAKE_PREFIX_PATH=${BUILD_CMAKE_PREFIX_PATH}
86
+ -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
87
+ -DBISON_EXECUTABLE=${BISON_EXECUTABLE}
88
+ -DFLEX_EXECUTABLE=${FLEX_EXECUTABLE}
89
+ )
90
+
91
+ endif()
@@ -0,0 +1,78 @@
1
+ # Copyright (c) 2022-2025 [Ribose Inc](https://www.ribose.com).
2
+ # All rights reserved.
3
+ # This file is a part of the Tebako project.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions
7
+ # are met:
8
+ # 1. Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
18
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
+ # POSSIBILITY OF SUCH DAMAGE.
25
+ #
26
+
27
+ if(MINGW)
28
+ # These days Windows has its own bash.exe that points to WSL installation even if nothing is installed
29
+ # So we (1) go look for 'sh' (presumably we will find MSys version)
30
+ # (2) assume that MSys bash is add_subdirectory
31
+ # (3) convert path to Windows
32
+ execute_process(
33
+ COMMAND "which" "sh"
34
+ RESULT_VARIABLE SH_RES
35
+ OUTPUT_VARIABLE SH
36
+ OUTPUT_STRIP_TRAILING_WHITESPACE
37
+ )
38
+
39
+ if(NOT (SH_RES EQUAL 0))
40
+ message(FATAL_ERROR "Could not find MSystem /usr/bin")
41
+ endif()
42
+
43
+ get_filename_component(BASH_DIR "${SH}" DIRECTORY)
44
+
45
+ execute_process(
46
+ COMMAND "cygpath" "-w" "${BASH_DIR}"
47
+ RESULT_VARIABLE BASH_RES
48
+ OUTPUT_VARIABLE MSYS_BIN_RAW
49
+ OUTPUT_STRIP_TRAILING_WHITESPACE
50
+ )
51
+
52
+ if(NOT (BASH_RES EQUAL 0))
53
+ message(FATAL_ERROR "Could not find MSys root")
54
+ endif()
55
+
56
+ # Some black magic below
57
+ cmake_path(SET MSYS_USR_RAW NORMALIZE "${MSYS_BIN_RAW}\\..\\..\\usr")
58
+ cmake_path(SET MSYS_TMP_RAW NORMALIZE "${MSYS_USR_RAW}\\..\\tmp")
59
+
60
+ string(REPLACE "\\" "\\\\" MSYS_BIN ${MSYS_BIN_RAW} )
61
+ string(REPLACE "/" "\\\\" MSYS_USR ${MSYS_USR_RAW} )
62
+ string(REPLACE "/" "\\\\" MSYS_TMP ${MSYS_TMP_RAW} )
63
+
64
+ set(BASH "${BASH_DIR}/bash.exe")
65
+
66
+ execute_process(
67
+ COMMAND "cygpath" "-w" "${BASH}"
68
+ RESULT_VARIABLE BASH_RES
69
+ OUTPUT_VARIABLE GNU_BASH
70
+ OUTPUT_STRIP_TRAILING_WHITESPACE
71
+ )
72
+
73
+ if(NOT (BASH_RES EQUAL 0 AND EXISTS ${GNU_BASH}))
74
+ message(FATAL_ERROR "Could not find gnu bash")
75
+ endif()
76
+
77
+ message(STATUS "Using gnu bash at ${GNU_BASH}")
78
+ endif(MINGW)
@@ -0,0 +1,93 @@
1
+ # Copyright (c) 2022-2025 [Ribose Inc](https://www.ribose.com).
2
+ # All rights reserved.
3
+ # This file is a part of the Tebako project.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions
7
+ # are met:
8
+ # 1. Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
18
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
+ # POSSIBILITY OF SUCH DAMAGE.
25
+
26
+ def_ext_prj_t(LIBARCHIVE "3.7.9" "ed8b5732e4cd6e30fae909fb945cad8ff9cb7be5c6cdaa3944ec96e4a200c04c")
27
+
28
+ message(STATUS "Collecting libarchive - " v${LIBARCHIVE_VER} " at " ${LIBARCHIVE_SOURCE_DIR})
29
+
30
+ if(DEFINED OPENSSL_ROOT_DIR)
31
+ set(OPENSSL_DIR_OPT "-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}")
32
+ endif(DEFINED OPENSSL_ROOT_DIR)
33
+
34
+ set(CMAKE_ARGUMENTS -DCMAKE_INSTALL_PREFIX=${DEPS}
35
+ -DCMAKE_BUILD_TYPE=Release
36
+ -DBUILD_SHARED_LIBS:BOOL=OFF
37
+ -DENABLE_ACL:BOOL=OFF
38
+ -DENABLE_CNG:BOOL=OFF
39
+ -DENABLE_ICONV:BOOL=OFF
40
+ -DENABLE_LIBXML2:BOOL=OFF
41
+ -DENABLE_BZip2:BOOL=OFF
42
+ -DENABLE_CPIO:BOOL=OFF
43
+ -DENABLE_CAT:BOOL=OFF
44
+ -DENABLE_TAR:BOOL=OFF
45
+ -DENABLE_TEST:BOOL=OFF
46
+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
47
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
48
+ ${OPENSSL_DIR_OPT}
49
+ )
50
+
51
+ if(DEFINED TEBAKO_BUILD_TARGET)
52
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_C_FLAGS=--target=${TEBAKO_BUILD_TARGET})
53
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_EXE_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
54
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_SHARED_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
55
+ endif(DEFINED TEBAKO_BUILD_TARGET)
56
+
57
+ # ...................................................................
58
+ # libarchive is the module that creates the real pain here
59
+ # Its shared version looks around to find other shared libraries which
60
+ # can do the real work. For example, if liblzma.so is found then libarchive
61
+ # supports lzma encoding.
62
+ # Static libary is compiled against predefined set of static archive libraries
63
+ # at the time when binary distribution created. This is not necessarily the
64
+ # set of libraries which is present at the system where this script is
65
+ # executed.
66
+ #
67
+ # There are two options to fix it:
68
+ #
69
+ # 1) Build local version of libarchive.a
70
+ #
71
+ # 2) Use LIBARCHIVE_STATIC_LIBRARIES and LIBARCHIVE_STATIC_LDFLAGS that are
72
+ # set by pkg_check_modules(LIBARCHIVE IMPORTED_TARGET libarchive>=3.1.2)
73
+ #
74
+ # Method #1 is implemented here.
75
+ # ...................................................................
76
+
77
+ set(__LIBARCHIVE "${DEPS}/lib/libarchive.a")
78
+
79
+ ExternalProject_Add(${LIBARCHIVE_PRJ}
80
+ PREFIX "${DEPS}"
81
+ URL https://www.libarchive.org/downloads/libarchive-${LIBARCHIVE_VER}.tar.xz
82
+ URL_HASH SHA256=${LIBARCHIVE_HASH}
83
+ DOWNLOAD_NO_PROGRESS true
84
+ UPDATE_COMMAND ""
85
+ CMAKE_ARGS ${CMAKE_ARGUMENTS}
86
+ SOURCE_DIR ${LIBARCHIVE_SOURCE_DIR}
87
+ BINARY_DIR ${LIBARCHIVE_BINARY_DIR}
88
+ BUILD_BYPRODUCTS ${__LIBARCHIVE}
89
+ )
90
+
91
+ add_library(_LIBARCHIVE STATIC IMPORTED)
92
+ set_target_properties(_LIBARCHIVE PROPERTIES IMPORTED_LOCATION ${__LIBARCHIVE})
93
+ add_dependencies(_LIBARCHIVE ${LIBARCHIVE_PRJ})
@@ -0,0 +1,61 @@
1
+ # Copyright (c) 2024-2025 [Ribose Inc](https://www.ribose.com).
2
+ # All rights reserved.
3
+ # This file is a part of the Tebako project.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions
7
+ # are met:
8
+ # 1. Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
18
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
+ # POSSIBILITY OF SUCH DAMAGE.
25
+
26
+ def_ext_prj_t(LIBFMT "10.2.1" "312151a2d13c8327f5c9c586ac6cf7cddc1658e8f53edae0ec56509c8fa516c9")
27
+
28
+ message(STATUS "Collecting libfmt - " v${LIBFMT_VER} " at " ${LIBFMT_SOURCE_DIR})
29
+
30
+ set(__LIBFMT "${DEPS}/lib/libfmt.a")
31
+
32
+ set(CMAKE_ARGUMENTS -DCMAKE_INSTALL_PREFIX=${DEPS}
33
+ -DFMT_DOC=OFF
34
+ -DFMT_TEST=OFF
35
+ -DFMT_FUZZ=OFF
36
+ -DFMT_CUDA_TEST=OFF
37
+ -DCMAKE_BUILD_TYPE=Release
38
+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
39
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
40
+ )
41
+
42
+ if(TEBAKO_BUILD_TARGET)
43
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_C_FLAGS=--target=${TEBAKO_BUILD_TARGET})
44
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_EXE_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
45
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_SHARED_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
46
+ endif(TEBAKO_BUILD_TARGET)
47
+
48
+ ExternalProject_Add(${LIBFMT_PRJ}
49
+ PREFIX "${DEPS}"
50
+ URL https://github.com/fmtlib/fmt/releases/download/${LIBFMT_VER}/fmt-${LIBFMT_VER}.zip
51
+ URL_HASH SHA256=${LIBFMT_HASH}
52
+ DOWNLOAD_NO_PROGRESS true
53
+ CMAKE_ARGS ${CMAKE_ARGUMENTS}
54
+ SOURCE_DIR ${LIBFMT_SOURCE_DIR}
55
+ BINARY_DIR ${LIBFMT_BINARY_DIR}
56
+ BUILD_BYPRODUCTS ${__LIBFMT}
57
+ )
58
+
59
+ add_library(_LIBFMT STATIC IMPORTED)
60
+ set_target_properties(_LIBFMT PROPERTIES IMPORTED_LOCATION ${__LIBFMT})
61
+ add_dependencies(_LIBFMT ${LIBFMT_PRJ})
@@ -0,0 +1,55 @@
1
+ # Copyright (c) 2024-2025 [Ribose Inc](https://www.ribose.com).
2
+ # All rights reserved.
3
+ # This file is a part of the Tebako project.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions
7
+ # are met:
8
+ # 1. Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ #
14
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
+ # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16
+ # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
+ # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
18
+ # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24
+ # POSSIBILITY OF SUCH DAMAGE.
25
+
26
+ def_ext_prj_t(LIBHOWARDHINNANTDATE "3.0.1" "7a390f200f0ccd207e8cff6757e04817c1a0aec3e327b006b7eb451c57ee3538")
27
+
28
+ message(STATUS "Collecting libutfcpp - " v${LIBHOWARDHINNANTDATE_VER} " at " ${LIBHOWARDHINNANTDATE_SOURCE_DIR})
29
+
30
+ set(CMAKE_ARGUMENTS -DCMAKE_INSTALL_PREFIX=${DEPS}
31
+ -DUTF8_INSTALL=OFF
32
+ -DUTF8_SAMPLES=OFF
33
+ -DUTF8_TESTS=OFF
34
+ -DCMAKE_BUILD_TYPE=Release
35
+ -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
36
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
37
+ )
38
+
39
+ if(TEBAKO_BUILD_TARGET)
40
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_C_FLAGS=--target=${TEBAKO_BUILD_TARGET})
41
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_EXE_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
42
+ list(APPEND CMAKE_ARGUMENTS -DCMAKE_SHARED_LINKER_FLAGS=--target=${TEBAKO_BUILD_TARGET})
43
+ endif(TEBAKO_BUILD_TARGET)
44
+
45
+ ExternalProject_Add(${LIBHOWARDHINNANTDATE_PRJ}
46
+ PREFIX "${DEPS}"
47
+ URL https://github.com/HowardHinnant/date/archive/refs/tags/v${LIBHOWARDHINNANTDATE_VER}.tar.gz
48
+ URL_HASH SHA256=${LIBHOWARDHINNANTDATE_HASH}
49
+ DOWNLOAD_NO_PROGRESS true
50
+ UPDATE_COMMAND ""
51
+ CMAKE_ARGS ${CMAKE_ARGUMENTS}
52
+ SOURCE_DIR ${LIBHOWARDHINNANTDATE_SOURCE_DIR}
53
+ BINARY_DIR ${LIBHOWARDHINNANTDATE_BINARY_DIR}
54
+ BUILD_BYPRODUCTS ${__LIBHOWARDHINNANTDATE}
55
+ )