]> git.sesse.net Git - pkanalytics/blob - cross-prepare.txt
Support filtering passes by thrower and receiver.
[pkanalytics] / cross-prepare.txt
1 # This can probably be executed as a script instead of being run by hand,
2 # but odds are something is going wrong, so I wouldn't recommend it. :-)
3 # If this doesn't work for you, feel free to send corrections, but any
4 # issues here do not count as a bug.
5
6 # Create the directory
7 sudo mkdir /opt/qt-cross
8 sudo chown $USER /opt/qt-cross
9 chmod 0755 /opt/qt-cross
10
11 # Get MinGW
12 sudo apt install wine64 g++-mingw-w64
13 sudo update-alternatives --config x86_64-w64-mingw32-gcc  # choose posix
14 sudo update-alternatives --config x86_64-w64-mingw32-g++  # choose posix
15
16 # Build sqlite3
17 wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz
18 tar axvf sqlite-autoconf-3420000.tar.gz
19 cd sqlite-autoconf-3420000
20 ./configure --host x86_64-w64-mingw32 --prefix /opt/qt-cross
21 make -j32
22 make install
23 cd ..
24
25 # Set up CMake cross-compiler file
26 cat <<'EOF' >/tmp/profile.cmake
27 set(CMAKE_SYSTEM_NAME Windows)
28 set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
29 set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
30 set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
31 set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran)
32 set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
33 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
34 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
35 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
36 set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
37 EOF
38
39 # Build Qt (completely crazy)
40 sudo apt-get build-dep qt6-base
41 sudo apt install qt6-base-dev-tools
42 apt-get source qt6-base
43 cd qt6-base-6.4.2+dfsg
44 wget https://download.firedaemon.com/FireDaemon-OpenSSL/openssl-1.1.1u.zip
45 unzip openssl-1.1.1u.zip
46 mkdir src/3rdparty/sqlite/
47 cp ../sqlite-autoconf-3420000/sqlite3.[ch] src/3rdparty/sqlite/
48 ./configure -prefix /opt/qt-cross -no-feature-sql-odbc -platform linux-g++-64 -qt-host-path /usr -xplatform win32-g++ -device-option CROSS_COMPILE=x86_64-w64-mingw32- -release -opengl desktop -nomake examples -no-icu -- -DQT_FORCE_BUILD_TOOLS=ON  -DCMAKE_TOOLCHAIN_FILE=/tmp/profile.cmake -DQt6HostInfo_DIR=/usr/lib/x86_64-linux-gnu/cmake/Qt6HostInfo -DOPENSSL_ROOT_DIR=`pwd`/openssl-1.1 -DFEATURE_vulkan=OFF -DFEATURE_tabletevent=OFF
49 ninja
50 ninja install
51 cd ..
52
53 # Various hacks to get Qt build tools to run properly under Meson
54 ln -s /usr/lib/qt6/libexec/uic /opt/qt-cross/bin/uic
55 cp /usr/lib/gcc/x86_64-w64-mingw32/12-posix/{libstdc++-6,libgcc_s_seh-1}.dll /opt/qt-cross/bin
56 cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll /opt/qt-cross/bin
57
58 # Build FFmpeg
59 git clone https://git.ffmpeg.org/ffmpeg.git
60 cd ffmpeg
61 ./configure --prefix=/opt/qt-cross --disable-crystalhd --enable-cross-compile --disable-vaapi --disable-vdpau --target-os=mingw64 --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
62 make -j32
63 make install
64 cd ..