Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# select as base image matching your host to get process isolation
FROM mcr.microsoft.com/windows/servercore:ltsc2019

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# this creates an empty file named recycle.bin which essentialy disables the recycle bin
# this hack is needed because msys seems to create some files with wierd names in recycle bin
# that freeze the docker layer when commiting
# dirty hack
RUN echo . > 'C:\$RECYCLE.BIN';

RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
Invoke-WebRequest -UseBasicParsing -uri "https://github.com/msys2/msys2-installer/releases/download/2021-07-25/msys2-base-x86_64-20210725.sfx.exe" -OutFile msys2.exe; \
.\msys2.exe -y -oC:\\; \
Remove-Item msys2.exe;
RUN 'mkdir C:/msys64/home/docker/ && cd C:/msys64/home/docker/'

SHELL ["cmd", "/S", "/C"]
# set envvars PATH HOME CHERE_INVOKING MSYS_SYSTEM - https://www.msys2.org/docs/ci/#other-systems
RUN setx PATH C:\msys64\bin;C:\msys64\mingw32\bin;C:\msys64\usr\bin;%PATH% & \
setx HOME C:\msys64\home\docker & \
setx CHERE_INVOKING yes & \
setx MSYSTEM MINGW64

WORKDIR C:\\msys64\\home\\docker
RUN C:\msys64\usr\bin\bash.exe -lc " "
SHELL ["cmd", "/S", "/C"]
RUN C:\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Syuu" & C:\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Syuu" & C:\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Scc "
# install general packages needed to run build scripts
RUN C:\msys64\usr\bin\bash.exe -c 'pacman --noconfirm --needed -Sy git vim base-devel'

# install packages and build scopy-deps
ARG BUILD_TARGET=x86_64
ENV BUILD_TARGET=$BUILD_TARGET
RUN echo %BUILD_TARGET%

COPY build_mingw.sh .
RUN C:\msys64\usr\bin\bash.exe -c "./build_mingw.sh install_pacman_deps"
84 changes: 84 additions & 0 deletions docker/build_mingw.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#/bin/bash
LIBIIO_BRANCH=master
LIBAD9361_BRANCH=master
LIBAD9166_BRANCH=master

export WORKDIR=/home/$USER/

init_env() {

export ARCH=x86_64
export MINGW_VERSION=mingw32
export CC=/${MINGW_VERSION}/bin/${ARCH}-w64-mingw32-gcc.exe
export CXX=/${MINGW_VERSION}/bin/${ARCH}-w64-mingw32-g++.exe

export JOBS=-j9
export CMAKE_GENERATOR="Unix Makefiles"
export STAGING_DIR="/$MINGW_VERSION"
export MAKE_BIN="/bin/make"
export MAKE="$MAKE_BIN $JOBS"
export CMAKE_OPTS="-DCMAKE_C_COMPILER:FILEPATH=${CC}\
-DCMAKE_CXX_COMPILER:FILEPATH=${CXX}\
-DCMAKE_MAKE_PROGRAM:FILEPATH=${MAKE_BIN}\
-DPKG_CONFIG_EXECUTABLE=/$MINGW_VERSION/bin/pkg-config.exe\
-DCMAKE_MODULE_PATH=$STAGING_DIR\
-DCMAKE_PREFIX_PATH=$STAGING_DIR/lib/cmake\
-DCMAKE_BUILD_TYPE=RelWithDebInfo\
-DCMAKE_STAGING_PREFIX=$STAGING_DIR\
-DCMAKE_INSTALL_PREFIX=$STAGING_DIR"

export CMAKE="/$MINGW_VERSION/bin/cmake"
export HOST=${MINGW_VERSION}-w64-mingw32
export AUTOCONF_OPTS="--prefix=/mingw64 \
--host=${ARCH}-w64-mingw32 \
--enable-shared \
--disable-static"
}

install_pacman_deps() {
WINDEPS="\
msys2-devel \
mingw-w64-i686-toolchain \
mingw-w64-i686-cmake \
mingw-w64-i686-ninja \
mingw-w64-i686-qt5-winextras \
mingw-w64-i686-qt5 \
mingw-w64-i686-qt5-3d \
mingw-w64-i686-gdb \
mingw-w64-i686-mesa \
mingw-w64-i686-qt-creator \
mingw-w64-i686-nsis"
pacman -S --noconfirm --needed $WINDEPS
}


clone() {
cd /c/
git clone https://github.com/analogdevicesinc/adi-kuiper-imager --branch $BRANCH
}

create_deploy() {
mkdir -p /c/adi-kuiper-imager/build/deploy
cp /c/msys64/mingw32/bin/{libbrotlicommon.dll,libbrotlidec.dll,libbrotlienc.dll,libdouble-conversion.dll,libfreetype-6.dll,libglib-2.0-0.dll,libgraphite2.dll,libharfbuzz-0.dll,libicudt*.dll,libicuin*.dll,libicuuc*.dll,libintl-8.dll,liblzma-5.dll,libmd4c.dll,libpcre-2*.dll,libpng16-16.dll,zlib1.dll,libbz2-1.dll,libiconv-2.dll,liblz4.dll,libxml2-2.dll,libzstd.dll,libgcc_s_dw2-1.dll,libstdc++-6.dll,libwinpthread-1.dll libssl*.dll libcrypto*.dll} /c/adi-kuiper-imager/build/deploy
#cp /c/OpenSSL-Win32/libeay32.dll /c/adi-kuiper-imager/build/deploy
}

build() {
export PATH=/c/msys64/mingw32/bin:/c/msys64/usr/bin:$PATH &&
cmake -B /c/adi-kuiper-imager/build -S /c/adi-kuiper-imager -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DQT_QMAKE_EXECUTABLE:STRING="/c/msys64/mingw32/bin/qmake.exe" -DCMAKE_PREFIX_PATH:STRING="/c/msys64/mingw32/bin" -DCMAKE_C_COMPILER:STRING="/c/msys64/mingw32/bin/gcc.exe" -DCMAKE_CXX_COMPILER:STRING="/c/msys64/mingw32/bin/g++.exe" -DCMAKE_MAKE_PROGRAM:FILEPATH="/c/msys64/mingw32/bin/ninja.exe" /c/adi-kuiper-imager &&
cmake --build /c/adi-kuiper-imager/build --target all
}

create_installer() {
makensis.exe /c/adi-kuiper-imager/build/kuiper-imager.nsi
}

build_imager() {
clone
build
create_deploy
create_installer
}

init_env
$@
8 changes: 0 additions & 8 deletions windows/kuiper-imager.nsi.in
Original file line number Diff line number Diff line change
Expand Up @@ -112,18 +112,10 @@ InstallDir "$PROGRAMFILES\Kuiper Imager"
######################################################################

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Dutch"
!insertmacro MUI_LANGUAGE "Italian"

LangString termMsg ${LANG_ENGLISH} "Kuiper Imager seems to be running and busy.$\nDo you want to terminate process?"
LangString stopMsg ${LANG_ENGLISH} "Stopping Kuiper Imager"
LangString win7Msg ${LANG_ENGLISH} "Windows 7 or above required"
LangString termMsg ${LANG_DUTCH} "Kuiper Imager is momenteel actief.$\nWilt u het programma afsluiten?"
LangString stopMsg ${LANG_DUTCH} "Bezig met afsluiten Kuiper Imager"
LangString win7Msg ${LANG_DUTCH} "Minimaal Windows 7 is vereist"
LangString termMsg ${LANG_ITALIAN} "Kuiper Imager sembra essere in esecuzione e occupato.$\nVuoi terminare il processo Kuiper Imager?"
LangString stopMsg ${LANG_ITALIAN} "Chiusura processo Kuiper Imager"
LangString win7Msg ${LANG_ITALIAN} "Per l'esecuzione del programma è richiesto Windows 7 o versioni successive"

######################################################################

Expand Down