| 1 | #!/bin/bash |
| 2 | |
| 3 | REPO_ROOT="$(dirname "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null && pwd -P)")")" |
| 4 | CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-RelWithDebInfo}" |
| 5 | |
| 6 | # shellcheck source=./win-build-dir.sh |
| 7 | . "${REPO_ROOT}/packaging/windows/win-build-dir.sh" |
| 8 | |
| 9 | set -eu -o pipefail |
| 10 | |
| 11 | windows_path_prefix= |
| 12 | windows_path_prefix_arg=() |
| 13 | |
| 14 | usage() { |
| 15 | cat <<EOF |
| 16 | Usage: $0 [options] |
| 17 | |
| 18 | Options: |
| 19 | --windows-path-prefix <path> Override NETDATA_WINDOWS_PATH_PREFIX for this build. |
| 20 | --help Show this help message. |
| 21 | EOF |
| 22 | } |
| 23 | |
| 24 | while [ $# -gt 0 ]; do |
| 25 | case "$1" in |
| 26 | --windows-path-prefix) |
| 27 | if [ $# -lt 2 ]; then |
| 28 | echo "Missing value for --windows-path-prefix" >&2 |
| 29 | exit 1 |
| 30 | fi |
| 31 | windows_path_prefix="$2" |
| 32 | shift 2 |
| 33 | ;; |
| 34 | --help|-h) |
| 35 | usage |
| 36 | exit 0 |
| 37 | ;; |
| 38 | *) |
| 39 | echo "Unrecognized option '$1'" >&2 |
| 40 | usage >&2 |
| 41 | exit 1 |
| 42 | ;; |
| 43 | esac |
| 44 | done |
| 45 | |
| 46 | if [ -n "${windows_path_prefix}" ]; then |
| 47 | windows_path_prefix_arg=("-DNETDATA_WINDOWS_PATH_PREFIX=${windows_path_prefix}") |
| 48 | fi |
| 49 | |
| 50 | if [ -d "${build}" ]; then |
| 51 | rm -rf "${build}" |
| 52 | fi |
| 53 | |
| 54 | generator="Unix Makefiles" |
| 55 | build_args="-j $(nproc)" |
| 56 | |
| 57 | if command -v ninja >/dev/null 2>&1; then |
| 58 | generator="Ninja" |
| 59 | build_args="-k 1" |
| 60 | fi |
| 61 | |
| 62 | COMMON_CFLAGS="-Wa,-mbig-obj -pipe -D_FILE_OFFSET_BITS=64 -D__USE_MINGW_ANSI_STDIO=1" |
| 63 | |
| 64 | if [ "${CMAKE_BUILD_TYPE}" = "Debug" ]; then |
| 65 | BUILD_CFLAGS="-O0 -ggdb -Wall -Wextra -Wno-char-subscripts -DNETDATA_INTERNAL_CHECKS=1 ${COMMON_CFLAGS} ${CFLAGS:-}" |
| 66 | else |
| 67 | BUILD_CFLAGS="-O2 ${COMMON_CFLAGS} ${CFLAGS:-}" |
| 68 | fi |
| 69 | |
| 70 | ${GITHUB_ACTIONS+echo "::group::Configuring"} |
| 71 | # shellcheck disable=SC2086 |
| 72 | CFLAGS="${BUILD_CFLAGS}" /usr/bin/cmake \ |
| 73 | -S "${REPO_ROOT}" \ |
| 74 | -B "${build}" \ |
| 75 | -G "${generator}" \ |
| 76 | -DCMAKE_INSTALL_PREFIX="/opt/netdata" \ |
| 77 | -DBUILD_FOR_PACKAGING=On \ |
| 78 | -DNETDATA_USER="${USER}" \ |
| 79 | -DENABLE_ACLK=On \ |
| 80 | -DENABLE_CLOUD=On \ |
| 81 | -DENABLE_ML=On \ |
| 82 | -DENABLE_PLUGIN_GO=On \ |
| 83 | -DENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE=Off \ |
| 84 | -DENABLE_PLUGIN_OTEL=Off \ |
| 85 | -DENABLE_PLUGIN_SYSTEMD_JOURNAL=Off \ |
| 86 | -DENABLE_BUNDLED_JSONC=On \ |
| 87 | -DENABLE_BUNDLED_PROTOBUF=Off \ |
| 88 | -DRust_COMPILER=/ucrt64/bin/rustc \ |
| 89 | "${windows_path_prefix_arg[@]}" \ |
| 90 | ${EXTRA_CMAKE_OPTIONS:-} |
| 91 | ${GITHUB_ACTIONS+echo "::endgroup::"} |
| 92 | |
| 93 | ${GITHUB_ACTIONS+echo "::group::Building"} |
| 94 | # shellcheck disable=SC2086 |
| 95 | cmake --build "${build}" -- ${build_args} |
| 96 | ${GITHUB_ACTIONS+echo "::endgroup::"} |
| 97 | |
| 98 | ${GITHUB_ACTIONS+echo "::group::Netdata buildinfo"} |
| 99 | "${build}/netdata.exe" -W buildinfo || true |
| 100 | ${GITHUB_ACTIONS+echo "::endgroup::"} |
| 101 | |
| 102 | if [ -t 1 ]; then |
| 103 | echo |
| 104 | echo "Compile with:" |
| 105 | echo "cmake --build \"${build}\"" |
| 106 | fi |