Rocrail cross compiled on Ubuntu for Windows – Cross compiling for Windows from an Ubuntu computer is a bit challenging. You must compile Rocrail for Ubuntu before you try to cross compile for Windows.
You will need to install several tools and packages before you can cross compile. Make sure they are installed and working properly before you try to cross compile.
The important tools that you must have are:
Perform the next steps carefully and in sequence to create a windows installer version of Rocrail.
sudo apt-get install mingw32
If GdiPlus is missing: (and it usually is)
Copy the contents to /usr/i586-mingw32msvc:
unzip gdiplus.zip cd gdiplus sudo cp -r include/* /usr/i586-mingw32msvc/include/ sudo cp -r lib/* /usr/i586-mingw32msvc/lib/
tar xvjf wxWidgets-3.0.1.tar.bz2 cd wxWidgets-3.0.1 # run configure like: ./configure --prefix=/usr/i586-mingw32msvc --host=i586-mingw32msvc --target=i586-mingw32msvc --with-msw --enable-unicode --enable-mslu --disable-shared --enable-graphics_ctx --enable-monolithic --enable-stc
sudo make install
cd Rocrail cd rocs make PLATFORM=WIN32 clean make TOOLPREFIX=i586-mingw32msvc- PLATFORM=WIN32 all cd ../rocint make PLATFORM=WIN32 clean make TOOLPREFIX=i586-mingw32msvc- PLATFORM=WIN32 all cd ../rocrail make PLATFORM=WIN32 clean make TOOLPREFIX=i586-mingw32msvc- PLATFORM=WIN32 all cd ../roclcdr make PLATFORM=WIN32 clean make TOOLPREFIX=i586-mingw32msvc- PLATFORM=WIN32 all cd ../rocdigs make PLATFORM=WIN32 clean make TOOLPREFIX=i586-mingw32msvc- PLATFORM=WIN32 all cd ..
cd rocview make PLATFORM=WIN32 clean make TOOLPREFIX=i586-mingw32msvc- LIBSUFFIX=-i586-mingw32msvc PLATFORM=WIN32 MINGWINSTALL=/usr/i586-mingw32msvc all cd ..
#note: The 'i586-mingw32msvc' text must be according to your installation of mingw, change when needed.
make all PLATFORM=WIN32 TOOLPREFIX=i586-mingw32msvc- LIBSUFFIX=-i586-mingw32msvc MINGWINSTALL=/usr/i586-mingw32msvc
cd winbin i586-mingw32msvc-strip *.dll i586-mingw32msvc-strip *.exe cd ..
Extract /usr/share/doc/mingw32-runtime/mingwm10.dll.gz to winbin
cd winbin sudo gunzip /usr/share/doc/mingw32-runtime/mingwm10.dll.gz cp /usr/share/doc/mingw32-runtime/mingwm10.dll . cd ..
Get and install wine from the official Wine HQ site Wine Headquarters or as distribution package:
sudo apt-get install wine
Get and install the Inno Setup windows exe using wine from the official Inno Setup site:
Inno Setup Website
#note: if you want to use the distribution scripts: the installation path has to be exactly "c:\Program Files\Inno Setup 5"
Create the package by changing to the rocrail directory and running Inno Setup with the rocrail.iss file (see makwin-full.sh on how to generate setup.iss from rocrail-template.iss) :
cd rocrail/package wine "c:\\Program Files\\Inno Setup 5\\ISCC.exe" rocrail.iss cd ../..
To cross compile using the 32/64 bits mingw compiler you first need to get the following packages, using your favourite package manager:
gcc-mingw-w64-base gcc-mingw-w64-i686 mingw-w64-dev binutils-mingw-w64-i686 g++mingw-w64-i686
If mingw32 was installed, the package manager will want to remove it because it is conflicting. Allow this.
First, wxWidgets have to be configured for use with mingw-w64-i686. If you do not have the wxWidgets yet, get the wxAll and extract the files as per the instructions above. Use the following command to configure the make files for the wxWidgets, from a terminal in the wxWidgets directory:
./configure --prefix=/usr/i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-msw --enable-unicode --enable-mslu --disable-shared --enable-graphics_ctx LDFLAGS=-static --enable-monolithic
The LDFLAGS=-static will include the required dll files during linking. With this flag it is not needed to copy needed dll files manually to the Rocrail/Rocview directory.
Now build and install the wx libraries:
make sudo make install
Rocrail and Rocview can be cross compiled using the main makefile (updated for mingw-w64-i686 at revision 3823) using the command:
make all PLATFORM=WIN32 TOOLPREFIX=i686-w64-mingw32- LIBSUFFIX=-i686-w64-mingw32 MINGWINSTALL=/usr/i686-w64-mingw32
The binaries in the winbin directory need to be stripped and the mingw10.dll added in the usual way as described above.