This commit is contained in:
trabucayre 2026-02-18 08:00:29 +00:00
parent 6e18a8dffb
commit 741c706ceb
5 changed files with 61 additions and 10 deletions

Binary file not shown.

Binary file not shown.

View File

@ -206,9 +206,9 @@ openFPGALoader can be installed via MSYS2:
Cross-compilation from Linux Cross-compilation from Linux
---------------------------- ----------------------------
openFPGALoader can be cross-compiled for Windows from Linux using MinGW-w64. openFPGALoader can be cross-compiled for Windows from Linux using MinGW-w64
The build system will automatically download and build the required dependencies toolchains (GCC or Clang). The build system will automatically download and
(libusb, libftdi). build the required dependencies (libusb, libftdi).
**Prerequisites (Debian/Ubuntu):** **Prerequisites (Debian/Ubuntu):**
@ -216,6 +216,9 @@ The build system will automatically download and build the required dependencies
sudo apt install \ sudo apt install \
mingw-w64 \ mingw-w64 \
libz-mingw-w64-dev \
clang \
lld \
cmake \ cmake \
pkg-config \ pkg-config \
p7zip-full p7zip-full
@ -229,11 +232,13 @@ The build system will automatically download and build the required dependencies
mingw64-gcc-c++ \ mingw64-gcc-c++ \
mingw64-zlib \ mingw64-zlib \
mingw64-zlib-static \ mingw64-zlib-static \
clang \
lld \
cmake \ cmake \
p7zip \ p7zip \
p7zip-plugins p7zip-plugins
**Build:** **Build (shared steps):**
.. code-block:: bash .. code-block:: bash
@ -241,22 +246,44 @@ The build system will automatically download and build the required dependencies
cd openFPGALoader cd openFPGALoader
mkdir build-win64 mkdir build-win64
cd build-win64 cd build-win64
**Configure + build with GCC (MinGW-w64):**
.. code-block:: bash
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-x86_64-w64-mingw32.cmake .. cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-x86_64-w64-mingw32.cmake ..
cmake --build . --parallel cmake --build . --parallel
**Configure + build with Clang (MinGW-w64 target):**
.. code-block:: bash
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-x86_64-w64-mingw32-clang.cmake ..
cmake --build . --parallel
The resulting ``openFPGALoader.exe`` will be a statically-linked executable The resulting ``openFPGALoader.exe`` will be a statically-linked executable
that only depends on standard Windows system DLLs (KERNEL32, msvcrt, WS2_32). that only depends on standard Windows system DLLs (KERNEL32, msvcrt, WS2_32).
.. NOTE::
``zlib`` for the Windows target is required. Configuration fails if it is
missing (install ``libz-mingw-w64-dev`` on Debian/Ubuntu or
``mingw64-zlib`` on Fedora/RHEL/Rocky).
``zlib`` is linked statically by default on Windows builds
(``-DWINDOWS_STATIC_ZLIB=ON``).
**Optional: Strip debug symbols to reduce size:** **Optional: Strip debug symbols to reduce size:**
.. code-block:: bash .. code-block:: bash
x86_64-w64-mingw32-strip openFPGALoader.exe x86_64-w64-mingw32-strip openFPGALoader.exe
# or
llvm-strip openFPGALoader.exe
**Cross-compilation options:** **Cross-compilation options:**
- ``-DCROSS_COMPILE_DEPS=OFF`` - Disable automatic dependency download (use system libraries) - ``-DCROSS_COMPILE_DEPS=OFF`` - Disable automatic dependency download (use system libraries)
- ``-DENABLE_CMSISDAP=ON`` - Enable CMSIS-DAP support (requires manually providing hidapi) - ``-DENABLE_CMSISDAP=ON`` - Enable CMSIS-DAP support (requires manually providing hidapi)
- ``-DWINDOWS_STATIC_ZLIB=OFF`` - Allow dynamic zlib linkage (produces ``zlib1.dll`` runtime dependency)
Common Common
====== ======

View File

@ -197,12 +197,15 @@ make<span class="w"> </span>-j
</section> </section>
<section id="cross-compilation-from-linux"> <section id="cross-compilation-from-linux">
<h3>Cross-compilation from Linux<a class="headerlink" href="#cross-compilation-from-linux" title="Link to this heading"></a></h3> <h3>Cross-compilation from Linux<a class="headerlink" href="#cross-compilation-from-linux" title="Link to this heading"></a></h3>
<p>openFPGALoader can be cross-compiled for Windows from Linux using MinGW-w64. <p>openFPGALoader can be cross-compiled for Windows from Linux using MinGW-w64
The build system will automatically download and build the required dependencies toolchains (GCC or Clang). The build system will automatically download and
(libusb, libftdi).</p> build the required dependencies (libusb, libftdi).</p>
<p><strong>Prerequisites (Debian/Ubuntu):</strong></p> <p><strong>Prerequisites (Debian/Ubuntu):</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span><span class="se">\</span> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>mingw-w64<span class="w"> </span><span class="se">\</span> <span class="w"> </span>mingw-w64<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>libz-mingw-w64-dev<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>clang<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>lld<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>cmake<span class="w"> </span><span class="se">\</span> <span class="w"> </span>cmake<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>pkg-config<span class="w"> </span><span class="se">\</span> <span class="w"> </span>pkg-config<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>p7zip-full <span class="w"> </span>p7zip-full
@ -214,30 +217,51 @@ The build system will automatically download and build the required dependencies
<span class="w"> </span>mingw64-gcc-c++<span class="w"> </span><span class="se">\</span> <span class="w"> </span>mingw64-gcc-c++<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>mingw64-zlib<span class="w"> </span><span class="se">\</span> <span class="w"> </span>mingw64-zlib<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>mingw64-zlib-static<span class="w"> </span><span class="se">\</span> <span class="w"> </span>mingw64-zlib-static<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>clang<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>lld<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>cmake<span class="w"> </span><span class="se">\</span> <span class="w"> </span>cmake<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>p7zip<span class="w"> </span><span class="se">\</span> <span class="w"> </span>p7zip<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>p7zip-plugins <span class="w"> </span>p7zip-plugins
</pre></div> </pre></div>
</div> </div>
<p><strong>Build:</strong></p> <p><strong>Build (shared steps):</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/trabucayre/openFPGALoader <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/trabucayre/openFPGALoader
<span class="nb">cd</span><span class="w"> </span>openFPGALoader <span class="nb">cd</span><span class="w"> </span>openFPGALoader
mkdir<span class="w"> </span>build-win64 mkdir<span class="w"> </span>build-win64
<span class="nb">cd</span><span class="w"> </span>build-win64 <span class="nb">cd</span><span class="w"> </span>build-win64
cmake<span class="w"> </span>-DCMAKE_TOOLCHAIN_FILE<span class="o">=</span>../cmake/Toolchain-x86_64-w64-mingw32.cmake<span class="w"> </span>.. </pre></div>
</div>
<p><strong>Configure + build with GCC (MinGW-w64):</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cmake<span class="w"> </span>-DCMAKE_TOOLCHAIN_FILE<span class="o">=</span>../cmake/Toolchain-x86_64-w64-mingw32.cmake<span class="w"> </span>..
cmake<span class="w"> </span>--build<span class="w"> </span>.<span class="w"> </span>--parallel
</pre></div>
</div>
<p><strong>Configure + build with Clang (MinGW-w64 target):</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cmake<span class="w"> </span>-DCMAKE_TOOLCHAIN_FILE<span class="o">=</span>../cmake/Toolchain-x86_64-w64-mingw32-clang.cmake<span class="w"> </span>..
cmake<span class="w"> </span>--build<span class="w"> </span>.<span class="w"> </span>--parallel cmake<span class="w"> </span>--build<span class="w"> </span>.<span class="w"> </span>--parallel
</pre></div> </pre></div>
</div> </div>
<p>The resulting <code class="docutils literal notranslate"><span class="pre">openFPGALoader.exe</span></code> will be a statically-linked executable <p>The resulting <code class="docutils literal notranslate"><span class="pre">openFPGALoader.exe</span></code> will be a statically-linked executable
that only depends on standard Windows system DLLs (KERNEL32, msvcrt, WS2_32).</p> that only depends on standard Windows system DLLs (KERNEL32, msvcrt, WS2_32).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><code class="docutils literal notranslate"><span class="pre">zlib</span></code> for the Windows target is required. Configuration fails if it is
missing (install <code class="docutils literal notranslate"><span class="pre">libz-mingw-w64-dev</span></code> on Debian/Ubuntu or
<code class="docutils literal notranslate"><span class="pre">mingw64-zlib</span></code> on Fedora/RHEL/Rocky).
<code class="docutils literal notranslate"><span class="pre">zlib</span></code> is linked statically by default on Windows builds
(<code class="docutils literal notranslate"><span class="pre">-DWINDOWS_STATIC_ZLIB=ON</span></code>).</p>
</div>
<p><strong>Optional: Strip debug symbols to reduce size:</strong></p> <p><strong>Optional: Strip debug symbols to reduce size:</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>x86_64-w64-mingw32-strip<span class="w"> </span>openFPGALoader.exe <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>x86_64-w64-mingw32-strip<span class="w"> </span>openFPGALoader.exe
<span class="c1"># or</span>
llvm-strip<span class="w"> </span>openFPGALoader.exe
</pre></div> </pre></div>
</div> </div>
<p><strong>Cross-compilation options:</strong></p> <p><strong>Cross-compilation options:</strong></p>
<ul class="simple"> <ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">-DCROSS_COMPILE_DEPS=OFF</span></code> - Disable automatic dependency download (use system libraries)</p></li> <li><p><code class="docutils literal notranslate"><span class="pre">-DCROSS_COMPILE_DEPS=OFF</span></code> - Disable automatic dependency download (use system libraries)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">-DENABLE_CMSISDAP=ON</span></code> - Enable CMSIS-DAP support (requires manually providing hidapi)</p></li> <li><p><code class="docutils literal notranslate"><span class="pre">-DENABLE_CMSISDAP=ON</span></code> - Enable CMSIS-DAP support (requires manually providing hidapi)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">-DWINDOWS_STATIC_ZLIB=OFF</span></code> - Allow dynamic zlib linkage (produces <code class="docutils literal notranslate"><span class="pre">zlib1.dll</span></code> runtime dependency)</p></li>
</ul> </ul>
</section> </section>
</section> </section>

File diff suppressed because one or more lines are too long