|
|
|
@ -740,6 +740,86 @@ or ``RelWithDebInfo``.
|
|
|
|
|
|
|
|
|
|
Then build the ``INSTALL`` target listed under ``CMakePredefinedTargets``.
|
|
|
|
|
|
|
|
|
|
Windows cross compiling from Linux
|
|
|
|
|
==================================
|
|
|
|
|
|
|
|
|
|
.. highlight:: bash
|
|
|
|
|
|
|
|
|
|
If you are on Linux but need to produce a Windows build (for example, because the
|
|
|
|
|
DF version you're working on isn't out for Linux yet), here is how you can build
|
|
|
|
|
and run a Windows binary on Linux.
|
|
|
|
|
|
|
|
|
|
Step 1: prepare a docker image
|
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
|
|
On your Linux host, install and run the docker daemon and then run these commands::
|
|
|
|
|
|
|
|
|
|
xhost +local:root
|
|
|
|
|
git clone https://github.com/BenLubar/build-env.git
|
|
|
|
|
cd build-env/msvc
|
|
|
|
|
docker build .
|
|
|
|
|
docker image ls
|
|
|
|
|
IMAGE_ID=<your image id>
|
|
|
|
|
docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume=/tmp/.X11-unix:/tmp/.X11-unix --user buildmaster --name dfhack-win $IMAGE_ID
|
|
|
|
|
|
|
|
|
|
The ``xhost`` command and ``--env`` parameters are there so you can eventually
|
|
|
|
|
run Dwarf Fortress from the container and have it display on your host.
|
|
|
|
|
|
|
|
|
|
Step 2: build DFHack
|
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
|
|
The ``docker run`` command above will give you a shell prompt (as root) in the
|
|
|
|
|
container. Inside the container, run the following commands::
|
|
|
|
|
|
|
|
|
|
git clone https://github.com/DFHack/dfhack.git
|
|
|
|
|
cd dfhack
|
|
|
|
|
git submodule update --init
|
|
|
|
|
cd build
|
|
|
|
|
dfhack-configure windows 64 Release
|
|
|
|
|
dfhack-make
|
|
|
|
|
|
|
|
|
|
Inside the ``dfhack-*`` scripts there are several commands that set up the wine
|
|
|
|
|
server. Each invocation of a windows tool will cause wine to run in the container.
|
|
|
|
|
Preloading the wineserver and telling it not to exit will speed configuration and
|
|
|
|
|
compilation up considerably (approx. 10x). You can configure and build DFHack
|
|
|
|
|
with regular ``cmake`` and ``ninja`` commands, but your build will go much slower.
|
|
|
|
|
|
|
|
|
|
Step 3: copy Dwarf Fortress to the container
|
|
|
|
|
--------------------------------------------
|
|
|
|
|
|
|
|
|
|
First, create a directory in the container to house the Dwarf Fortress binary and
|
|
|
|
|
assets::
|
|
|
|
|
|
|
|
|
|
mkdir ~/df
|
|
|
|
|
|
|
|
|
|
If you can just downlaod Dwarf Fortress directly into the container, then that's fine.
|
|
|
|
|
Otherwise, you can do something like this in your host Linux environment to copy an
|
|
|
|
|
installed version to the container::
|
|
|
|
|
|
|
|
|
|
cd ~/.steam/steam/steamapps/common/Dwarf\ Fortress/
|
|
|
|
|
docker cp . dfhack-win:df/
|
|
|
|
|
|
|
|
|
|
Step 4: install DFHack and run DF
|
|
|
|
|
---------------------------------
|
|
|
|
|
|
|
|
|
|
Back in the container, run the following commands::
|
|
|
|
|
|
|
|
|
|
cd dfhack/build
|
|
|
|
|
cmake .. -DCMAKE_INSTALL_PREFIX=/home/buildmaster/df
|
|
|
|
|
ninja install
|
|
|
|
|
cd ~/df
|
|
|
|
|
wine64 "Dwarf Fortress.exe"
|
|
|
|
|
|
|
|
|
|
Other notes
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
Closing your shell will kick you out of the container. Run this command on your Linux
|
|
|
|
|
host when you want to reattach::
|
|
|
|
|
|
|
|
|
|
docker start -ai dfhack-win
|
|
|
|
|
|
|
|
|
|
If you edit code and need to rebuild, run ``dfhack-make`` and then ``ninja install``.
|
|
|
|
|
That will handle all the wineserver management for you.
|
|
|
|
|
|
|
|
|
|
Building the documentation
|
|
|
|
|
==========================
|
|
|
|
|