1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
. $PSScriptRoot/windows-lib.ps1
$CMAKE_BUILD_PARALLEL_LEVEL=$env:NUMBER_OF_PROCESSORS
# avoid cmake warning about unknown escape sequences
$cwd = $(pwd | Convert-Path).Replace("\", "/")
Write-Host "== Get ZeroMQ" -ForegroundColor Blue
$FILENAME="zmq-${ZMQ_VERSION}_${VC_ARCH_VER}.zip"
Invoke-NativeCommand curl.exe -JOL https://github.com/tango-controls/zmq-windows-ci/releases/download/${ZMQ_VERSION}/${FILENAME}
md -Force ${TANGO_ZMQ_ROOT}
Expand-Archive -Path ${FILENAME} -DestinationPath ${TANGO_ZMQ_ROOT}
Write-Host "== Get omniORB" -ForegroundColor Blue
$FILENAME="omniorb-${OMNI_VERSION}_${VC_ARCH_VER}_${PYVER}.zip"
Invoke-NativeCommand curl.exe -JOL https://github.com/tango-controls/omniorb-windows-ci/releases/download/${OMNI_VERSION}/${FILENAME}
md -Force ${TANGO_OMNI_ROOT}
Expand-Archive -Path ${FILENAME} -DestinationPath ${TANGO_OMNI_ROOT}
Write-Host "== Get nasm" -ForegroundColor Blue
Invoke-NativeCommand curl.exe -L ${NASM_DOWNLOAD_LINK} -o nasm.exe
Invoke-NativeCommand ./nasm.exe /S /v/qn
Write-Host "== Build jpeg" -ForegroundColor Blue
$FILENAME="libjpeg-turbo-${JPEG_VERSION}.zip"
Invoke-NativeCommand curl.exe -L https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/${JPEG_VERSION}.zip -o ${FILENAME}
md -Force ${TANGO_JPEG_SOURCE}/..
Expand-Archive -Path ${FILENAME} -DestinationPath ${TANGO_JPEG_SOURCE}/..
Invoke-NativeCommand cmake `
-S "${TANGO_JPEG_SOURCE}" `
-B "${TANGO_JPEG_SOURCE}/build" `
-G "${CMAKE_GENERATOR}" `
-A "${ARCHITECTURE}" `
-DWITH_TURBOJPEG=ON `
-DCMAKE_INSTALL_PREFIX="${TANGO_JPEG_ROOT}" `
-DCMAKE_DEBUG_POSTFIX=d
Invoke-NativeCommand cmake `
--build "${TANGO_JPEG_SOURCE}/build" `
--target install `
--config "${CMAKE_BUILD_TYPE}"
Write-Host "== Get OTEL" -ForegroundColor Blue
$FILENAME="opentelemetry-with-deps-static-${CMAKE_BUILD_TYPE}-${ARCHITECTURE}.zip"
Invoke-NativeCommand curl.exe -JOL "https://gitlab.com/api/v4/projects/54003303/packages/generic/opentelemetry/${OTEL_VERSION}/${FILENAME}"
md -Force ${OTEL_ROOT}
Expand-Archive -Path ${FILENAME} -DestinationPath ${OTEL_ROOT}
mv ${OTEL_ROOT}/opentelemetry-cpp*/* ${OTEL_ROOT}
rm -Recurse ${OTEL_ROOT}/opentelemetry-cpp*
$ZLIB_NG_ROOT="${OTEL_ROOT}/zlib-ng"
Write-Host "== Build IDL" -ForegroundColor Blue
md -Force "${TANGO_IDL_SOURCE}"
Invoke-NativeCommand git clone -b ${TANGO_IDL_TAG} --depth 1 --quiet https://gitlab.com/tango-controls/tango-idl ${TANGO_IDL_SOURCE}
Invoke-NativeCommand cmake `
-S "${TANGO_IDL_SOURCE}" `
-B "${TANGO_IDL_SOURCE}/build" `
-G "${CMAKE_GENERATOR}" `
-A "${ARCHITECTURE}" `
-DCMAKE_INSTALL_PREFIX="${TANGO_IDL_ROOT}"
Invoke-NativeCommand cmake `
--build "${TANGO_IDL_SOURCE}/build" `
--target install `
--config "${CMAKE_BUILD_TYPE}"
Write-Host "== Build Catch" -ForegroundColor Blue
$FILENAME="catch-${CATCH_VERSION}.zip"
Invoke-NativeCommand curl.exe -L https://github.com/catchorg/Catch2/archive/refs/tags/v${CATCH_VERSION}.zip -o ${FILENAME}
md -Force ${TANGO_CATCH_SOURCE}/..
Expand-Archive -Path ${FILENAME} -DestinationPath ${TANGO_CATCH_SOURCE}/..
# The catch CMakeList.txt does not support CMAKE_MSVC_RUNTIME_LIBRARY so we have to do it manually ourselves.
$ADDITIONAL_ARGS=@()
if ($BUILD_SHARED_LIBS -eq "OFF") {
$ADDITIONAL_ARGS+="-DCMAKE_CXX_FLAGS_DEBUG=/MTd /Zi /Ob0 /Od /RTC1 "
$ADDITIONAL_ARGS+="-DCMAKE_CXX_FLAGS_RELEASE=/MT /O2 /Ob2 /DNDEBUG "
}
Invoke-NativeCommand cmake `
-S "${TANGO_CATCH_SOURCE}" `
-B "${TANGO_CATCH_SOURCE}/build" `
-G "${CMAKE_GENERATOR}" `
-A "${ARCHITECTURE}" `
-DCMAKE_INSTALL_PREFIX="${TANGO_CATCH_ROOT}" `
-DCATCH_INSTALL_DOCS=OFF `
-DCATCH_BUILD_TESTING=OFF `
-DCATCH_ENABLE_WERROR=OFF `
@ADDITIONAL_ARGS
Invoke-NativeCommand cmake `
--build "${TANGO_CATCH_SOURCE}/build" `
--target install `
--config "${CMAKE_BUILD_TYPE}"
Write-Host "== Get WIX" -ForegroundColor Blue
$FILENAME="wix311-binaries.zip"
Invoke-NativeCommand curl.exe -JOL https://github.com/wixtoolset/wix3/releases/download/wix3112rtm/${FILENAME}
md -Force ${WIX_TOOLSET_LOCATION}
Expand-Archive -Path ${FILENAME} -DestinationPath ${WIX_TOOLSET_LOCATION}
Write-Host "== Get Python" -ForegroundColor Blue
$FILENAME="python-${PYTHON_VERSION}-embed-${PY_ARCH}.zip"
Invoke-NativeCommand curl.exe -JOL https://www.python.org/ftp/python/${PYTHON_VERSION}/${FILENAME}
md -FORCE ${PYTHON_LOCATION}
Expand-Archive -Path ${FILENAME} -DestinationPath ${PYTHON_LOCATION}
$env:Path += ";${cwd}/${PYTHON_LOCATION}"
# On the Windows CI, we see the polling thread stall occasionally which causes
# the tests to fail. Increasing the TANGO_TEST_CATCH2_DEFAULT_POLL_PERIOD here
# avoids the failure when the stall occurs.
Write-Host "== Build tango" -ForegroundColor Blue
Invoke-NativeCommand cmake `
-S . `
-B build `
-G "${CMAKE_GENERATOR}" `
-A "${ARCHITECTURE}" `
-DCMAKE_VERBOSE_MAKEFILE=ON `
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON `
-DBUILD_SHARED_LIBS="${BUILD_SHARED_LIBS}" `
-DTANGO_WARNINGS_AS_ERRORS="${TANGO_WARNINGS_AS_ERRORS}" `
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" `
-Dtangoidl_ROOT="${cwd}/${TANGO_IDL_ROOT}" `
-DTANGO_INSTALL_DEPENDENCIES="${TANGO_INSTALL_DEPENDENCIES}" `
-DomniORB4_ROOT="${cwd}/${TANGO_OMNI_ROOT}" `
-DZeroMQ_ROOT="${cwd}/${TANGO_ZMQ_ROOT}" `
-Dcppzmq_ROOT="${cwd}/${TANGO_CPPZMQ_ROOT}" `
-DJPEG_ROOT="${cwd}/${TANGO_JPEG_ROOT}" `
-DCatch2_ROOT="${cwd}/${TANGO_CATCH_ROOT}" `
-DZLIB_ROOT="${cwd}/${ZLIB_NG_ROOT}" `
-DTANGO_USE_JPEG=ON `
-DJPEG_DEBUG_POSTFIX=d `
-DBUILD_TESTING="${BUILD_TESTING}" `
-DTANGO_USE_TELEMETRY="${TANGO_USE_TELEMETRY}" `
-DTANGO_TEST_CATCH2_DEFAULT_POLL_PERIOD=3000 `
-DCMAKE_PREFIX_PATH="${OTEL_ROOT}/cmake;${OTEL_ROOT}/lib/cmake;${OTEL_ROOT}/share/cmake"
Invoke-NativeCommand cmake `
--build build `
--config "${CMAKE_BUILD_TYPE}"
# We only want to make packages with bundled dependencies
if ($TANGO_INSTALL_DEPENDENCIES -eq "ON") {
Write-Host "== Create archive" -ForegroundColor Blue
# -B not working here, so we have to change directories
Push-Location build
# space after `-D` is required
Invoke-NativeCommand cpack -D CPACK_WIX_ROOT="${cwd}/${WIX_TOOLSET_LOCATION}" -C "${CMAKE_BUILD_TYPE}" -G "WIX;ZIP"
Pop-Location
}
|