CMake project manager compilation issues with MinGW and Windows XP compatibility
Kevin Funk
kfunk at kde.org
Tue Nov 15 12:53:39 UTC 2016
On Tuesday, 15 November 2016 14:14:27 CET Cordylus Interneter wrote:
> ---- On Tue, 15 Nov 2016 10:52:24 +0200 Kevin Funk <kfunk at kde.org> wrote
> ----
> > On Sunday, 13 November 2016 23:42:42 CET Cordylus Interneter wrote:
> > > Hello, I've built KDevelop on Windows XP using MinGW (natively, without
> > > MSYS). Should I post step-by-step guide on how it was done - where did
> > > i
> > > download suitable precompiled and source dependencies, how and in what
> > > order everything was compiled?
> >
> > By the way, I wouldn't mind if you could still send your detailed
> > instructions if you have them.
> >
> > I'm especially interested in:
> > - Did you compile Qt yourself?
> >
> > - If yes, how did you compile OpenSSL & ICU?
> >
> > /me is just re-building his Qt/KF5 + deps from scratch, targeting WinXP
> > 64
> > bit.
> >
> > Cheers,
> > Kevin
> >
> > > I still have some troubles setting up
> > > environment, but the exe works fine, so you should definitely switch
> > > your
> > > Platform Toolset to XP-compatible one. As for dependencies
> > > compatibility,
> > > the only problem I had with Frameworks was the support for
> > > CreateSymbolicLinkW in KIO, but that can be easily commented out and
> > > recompiled separately.
> > >
> > > KDevelop itself compiled without issues, except for CMake project
> > > manager.
> > > Here are the fixes that had to be done in it, I expect them to be taken
> > > upstream:
> > >
> > > 1. in projectmanagers/cmake/parser/cmListFileLexer.c and
> > > cmListFileLexer.in.l - #ifdef WIN32
> > > + #ifdef _WIN32
> > > + #include <io.h>
> > > why: as for the missing underscore, I'm not sure how it slipped in and
> > > compiled at all, and the include is needed for isatty function
> > > declaration.
> > >
> > > 2. in projectmanagers/cmake/parser/EncodingC.c
> > > - //#include "kwsysPrivate.h"
> > > + /* #include "kwsysPrivate.h" */
> > > - //#include KWSYS_HEADER(Encoding.h)
> > > + /* #include KWSYS_HEADER(Encoding.h) */
> > > why: since C sources are compiled in std mode, C++ comments do not
> > > work.
> >
> > --
> > Kevin Funk | kfunk at kde.org | http://kfunk.org
>
> No, I did not compile Qt, I used the installer
> qt-opensource-windows-x86-mingw492-5.5.1.exe, so I don't need to build Qt
> and QtWebKit. But then there is the bug in Qt with kioslave console window
> that you are aware of, as I see in the archives.
>
> Why do you target 64 bit? It's rarely used, most XP users are 32-bit.
>
> Here are all the build instructions:
Wow, that's some dedication! That took quite a while I guess...
Next time you *might* want to have a look at Emerge :)
Thanks for the list! Are you planning to further contribute to KDevelop?
You might want to join our IRC chat (#kdevelop @ Freenode IRC).
Cheers,
Kevin
> Directory structure: extracting all sources to one directory, building in
> the KF5 subdirectory, where also goes everything from the precompiled
> dependencies.
>
> Non-CMake dependencies:
>
> precompiled gettext (for i18n):
> https://mlocati.github.io/articles/gettext-iconv-windows.html
> copy bin/ to KF5/bin/, use the static version or delete libstdc++-6.dll
> after copying dynamic version, else you'll get conflicts later
>
> precompiled libintl (for i18n):
> http://gnuwin32.sourceforge.net/downlinks/libintl-bin-zip.php
> copy bin/
> http://gnuwin32.sourceforge.net/downlinks/libintl-dep-zip.php
> copy bin/
> http://gnuwin32.sourceforge.net/downlinks/libintl-lib-zip.php
> copy include/ and lib/
>
> sources of libxml2 (for kdoctools):
> http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz
> cd libxml2-2.9.4\win32 && cscript.exe configure.js compiler=mingw
> prefix=..\..\KF5 ftp=no http=no iconv=no && mingw32-make install-libs && cd
> ..\.. && move KF5\include\libxml2\libxml KF5\include
>
> sources of libxslt (for kdoctools):
> http://xmlsoft.org/sources/libxslt-1.1.29.tar.gz
> requires fix (bug reported): add quotes in win32\Makefile.mingw to
> install-libs target around the commands after cmd.exe /C (see
> win32\Makefile.mingw in libxml2 for correct example) cd
> libxslt-1.1.29\win32 && cscript.exe configure.js compiler=mingw
> prefix=..\..\KF5 && mingw32-make install-libs && cd ..\.. && move
> KF5\lib\libexslt.dll KF5\bin && move KF5\lib\libxslt.dll KF5\bin
>
> extract docbook-xml (for kdoctools)
> http://docbook.org/xml/4.5/docbook-xml-4.5.zip
> extract to: bin/data/xml/docbook/4.5
>
> extract docbook-xsl (for kdoctools)
> https://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xs
> l-1.79.1.zip/download extract to: bin/data/xml/docbook/xsl-stylesheets
>
> binary flex and bison (for kdoctools)
> http://downloads.sourceforge.net/project/winflexbison/win_flex_bison-2.5.6.z
> ip win_flex.exe to bin/flex.exe
> win_bison.exe to bin/bison.exe
> data/ to bin/data/
>
> alternative flex and bison:
> http://repo.msys2.org/msys/i686/flex-2.6.1-1-i686.pkg.tar.xz
> usr/bin/ to bin/
> http://repo.msys2.org/msys/i686/bison-3.0.4-1-i686.pkg.tar.xz
> usr/bin/ to bin/
> usr/share/bison to bin/data/bison
>
> precompiled boost (for kdevplatform)
> http://repo.msys2.org/mingw/i686/mingw-w64-i686-boost-1.62.0-1-any.pkg.tar.x
> z
>
> binary zip (for kdevplatform)
> https://sourceforge.net/projects/gnuwin32/files/zip/3.0/zip-3.0-bin.zip/down
> load bin/zip.exe
> https://sourceforge.net/projects/gnuwin32/files/zip/3.0/zip-3.0-dep.zip/down
> load bin/bzip2.dll
>
> precompiled shared-mime-info (for kdevelop)
> http://download.kde.org/stable/4.10.2/win32/shared-mime-info-x86-mingw4-0.71
> -bin.tar.bz2 bin/, share/
> copy KF5\bin\libintl-8.dll KF5\bin\libintl.dll
>
> unofficial LLVM build with llvm-config (for kdevelop)
> https://sourceforge.net/projects/clangonwin/files/MingwBuild/3.6/LLVM-3.6.0s
> vn-r218657-win32.exe/download add it to PATH
>
> binary png2ico (for kdevelop)
> http://www.winterdrache.de/freeware/png2ico/data/png2ico-win-2002-12-08.zip
> png2ico/png2ico.exe to bin/
>
> CMake-able dependencies:
>
> http://zlib.net/zlib-1.2.8.tar.xz
> http://download.kde.org/stable/frameworks/5.27/extra-cmake-modules-5.27.0.ta
> r.xz http://download.kde.org/stable/phonon/4.9.0/phonon-4.9.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/attica-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kitemmodels-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kitemviews-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/threadweaver-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kcodecs-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kguiaddons-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kwidgetsaddons-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/sonnet-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kconfig-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kwindowsystem-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/solid-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kglobalaccel-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/karchive-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kdbusaddons-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kcoreaddons-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kauth-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kcrash-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kjobwidgets-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kcompletion-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/ki18n-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kdoctools-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kconfigwidgets-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kservice-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kiconthemes-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/knotifications-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/ktextwidgets-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kxmlgui-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kbookmarks-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kio-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/knewstuff-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kparts-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kpackage-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kdeclarative-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/kcmutils-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/knotifyconfig-5.27.0.tar.xz
> http://download.kde.org/stable/frameworks/5.27/ktexteditor-5.27.0.tar.xz
> http://download.kde.org/stable/applications/16.08.2/src/libkomparediff2-16.0
> 8.2.tar.xz https://github.com/steveire/grantlee/archive/v5.1.0.tar.gz
> http://download.kde.org/stable/kdevelop/5.0.2/src/kdevplatform-5.0.2.tar.xz
> http://download.kde.org/stable/kdevelop/5.0.2/src/kdevelop-5.0.2.tar.xz
>
> They were compiled in the listed order using the following pattern:
> cd zlib-1.2.8 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd ..
>
> Special CMake keys for some packages were:
> -DPHONON_BUILD_PHONON4QT5=ON for phonon-4.9.0
> -DCMAKE_CXX_FLAGS="-DLIBXML_STATIC=1" for kdoctools-5.27.0 (had undefined
> reference to `_imp__xmlFree' otherwise) -DBUILD_TESTING=0 for
> kservice-5.27.0 (it failed to compile some test)
>
> I also had to add KF5\bin to PATH, since some packages required binaries
> from previous packages during build.
>
> So here's the full command to build everything CMake-able (after extracting
> all the downloaded archives):
>
> set PATH=%PATH%;%CD%\KF5\bin
> cd zlib-1.2.8 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd extra-cmake-modules-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> phonon-4.9.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" .
> -DPHONON_BUILD_PHONON4QT5=ON && mingw32-make && mingw32-make install && cd
> .. && ^ cd attica-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kitemmodels-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kitemviews-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd threadweaver-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kcodecs-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kguiaddons-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kwidgetsaddons-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd sonnet-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kconfig-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kwindowsystem-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> solid-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kglobalaccel-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> karchive-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kdbusaddons-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kcoreaddons-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kauth-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kcrash-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kjobwidgets-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kcompletion-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd ki18n-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kdoctools-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" .
> -DCMAKE_CXX_FLAGS="-DLIBXML_STATIC=1" && mingw32-make && mingw32-make
> install && cd .. && ^ cd kconfigwidgets-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kservice-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . -DBUILD_TESTING=0 &&
> mingw32-make && mingw32-make install && cd .. && ^ cd kiconthemes-5.27.0 &&
> cmake -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> knotifications-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd ktextwidgets-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kxmlgui-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kbookmarks-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kio-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd knewstuff-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kparts-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kpackage-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kdeclarative-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kcmutils-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> knotifyconfig-5.27.0 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd ktexteditor-5.27.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> libkomparediff2-16.08.2 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd grantlee-5.1.0 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ cd
> kdevplatform-5.0.2 && cmake -DCMAKE_INSTALL_PREFIX=..\KF5
> -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW Makefiles" . && mingw32-make &&
> mingw32-make install && cd .. && ^ cd kdevelop-5.0.2 && cmake
> -DCMAKE_INSTALL_PREFIX=..\KF5 -DCMAKE_PREFIX_PATH=..\KF5 -G "MinGW
> Makefiles" . && mingw32-make && mingw32-make install && cd .. && ^ echo
> "fin"
--
Kevin Funk | kfunk at kde.org | http://kfunk.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 163 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20161115/c5426b48/attachment-0001.sig>
More information about the KDevelop-devel
mailing list