Dockerfile.mingw 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # Dockerfile to build aria2 Windows binary using ubuntu mingw-w64
  2. # cross compiler chain.
  3. #
  4. # $ sudo docker build -t aria2-mingw - < Dockerfile.mingw
  5. #
  6. # After successful build, windows binary is located at
  7. # /aria2/src/aria2c.exe. You can copy the binary using following
  8. # commands:
  9. #
  10. # $ id=$(sudo docker create aria2-mingw)
  11. # $ sudo docker cp $id:/aria2/src/aria2c.exe <dest>
  12. # $ sudo docker rm -v $id
  13. FROM ubuntu:20.04
  14. MAINTAINER Tatsuhiro Tsujikawa
  15. # Change HOST to x86_64-w64-mingw32 to build 64-bit binary
  16. ENV HOST i686-w64-mingw32
  17. # It would be better to use nearest ubuntu archive mirror for faster
  18. # downloads.
  19. # RUN sed -ie 's/archive\.ubuntu/jp.archive.ubuntu/g' /etc/apt/sources.list
  20. RUN apt-get update && \
  21. DEBIAN_FRONTEND="noninteractive" \
  22. apt-get install -y --no-install-recommends \
  23. make binutils autoconf automake autotools-dev libtool \
  24. patch ca-certificates \
  25. pkg-config git curl dpkg-dev gcc-mingw-w64 g++-mingw-w64 \
  26. autopoint libcppunit-dev libxml2-dev libgcrypt20-dev lzip
  27. RUN curl -L -O https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz && \
  28. curl -L -O https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-2.4.1.tar.bz2 && \
  29. curl -L -O https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz && \
  30. curl -L -O http://zlib.net/zlib-1.2.11.tar.gz && \
  31. curl -L -O https://c-ares.haxx.se/download/c-ares-1.17.2.tar.gz && \
  32. curl -L -O https://www.libssh2.org/download/libssh2-1.9.0.tar.gz && \
  33. curl -L -O https://github.com/libssh2/libssh2/commit/ba149e804ef653cc05ed9803dfc94519ce9328f7.patch
  34. RUN tar xf gmp-6.2.1.tar.lz && \
  35. cd gmp-6.2.1 && \
  36. ./configure \
  37. --disable-shared \
  38. --enable-static \
  39. --prefix=/usr/local/$HOST \
  40. --host=$HOST \
  41. --disable-cxx \
  42. --enable-fat \
  43. CFLAGS="-mtune=generic -O2 -g0" && \
  44. make install
  45. RUN tar xf expat-2.4.1.tar.bz2 && \
  46. cd expat-2.4.1 && \
  47. ./configure \
  48. --disable-shared \
  49. --enable-static \
  50. --prefix=/usr/local/$HOST \
  51. --host=$HOST \
  52. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
  53. make install
  54. RUN tar xf sqlite-autoconf-3360000.tar.gz && \
  55. cd sqlite-autoconf-3360000 && \
  56. ./configure \
  57. --disable-shared \
  58. --enable-static \
  59. --prefix=/usr/local/$HOST \
  60. --host=$HOST \
  61. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
  62. make install
  63. RUN tar xf zlib-1.2.11.tar.gz && \
  64. cd zlib-1.2.11 && \
  65. CC=$HOST-gcc \
  66. AR=$HOST-ar \
  67. LD=$HOST-ld \
  68. RANLIB=$HOST-ranlib \
  69. STRIP=$HOST-strip \
  70. ./configure \
  71. --prefix=/usr/local/$HOST \
  72. --libdir=/usr/local/$HOST/lib \
  73. --includedir=/usr/local/$HOST/include \
  74. --static && \
  75. make install
  76. RUN tar xf c-ares-1.17.2.tar.gz && \
  77. cd c-ares-1.17.2 && \
  78. ./configure \
  79. --disable-shared \
  80. --enable-static \
  81. --without-random \
  82. --prefix=/usr/local/$HOST \
  83. --host=$HOST \
  84. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
  85. LIBS="-lws2_32" && \
  86. make install
  87. RUN tar xf libssh2-1.9.0.tar.gz && \
  88. cd libssh2-1.9.0 && \
  89. patch -p1 < ../ba149e804ef653cc05ed9803dfc94519ce9328f7.patch && \
  90. ./configure \
  91. --disable-shared \
  92. --enable-static \
  93. --prefix=/usr/local/$HOST \
  94. --host=$HOST \
  95. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
  96. --without-openssl \
  97. --with-wincng \
  98. LIBS="-lws2_32" && \
  99. make install
  100. ADD https://api.github.com/repos/aria2/aria2/git/refs/heads/master version.json
  101. RUN git clone https://github.com/aria2/aria2 && \
  102. cd aria2 && autoreconf -i && ./mingw-config && make && \
  103. $HOST-strip src/aria2c.exe