Cross-compiling with cmake?

Erik van Pienbroek erik at vanpienbroek.nl
Sun May 19 11:21:54 UTC 2013


Steven Boswell II schreef op za 18-05-2013 om 17:55 [-0700]:
> Now I'm trying to build phonon

About a year ago I tried to get various pieces of the KDE stack
cross-compiled using the Fedora MinGW toolchain. The phonon package is
also part of this. The spec file for it can be found at
http://svn.nntpgrab.nl/svn/fedora_cross/mingw-phonon/mingw-phonon.spec

It currently contains some CMake-specific overrides. My original plan
was to get all the core KDE packages built and afterwards trying to make
the mingw32_cmake/mingw64_cmake macros in mingw-filesystem more generic.
As I'm not that familiar with CMake and due to the lack of time I didn't
get to completing this original plan.

If you want to continue with this work-in-progress, feel free to use the
spec file I just mentioned as starting point. It can build phonon
successfully.

On my svn repo you can also find other packages which are still a
work-in-progress and need more work before they can be allowed in
Fedora. If you're interested in maintaining any of them feel free to use
them and propose them for review. The repo can be found at
http://svn.nntpgrab.nl/svn/fedora_cross/

> and I ran into a problem -- its build is using the host's cmake
> configuration files!  In phonon-4.6.0/phonon/CMakeLists.txt, after
> running "macro_optional_find_package(PulseAudio 0.9.15)",
> PULSEAUDIO_FOUND is TRUE, but none of the other variables are set,
> e.g. PULSEAUDIO_INCLUDE_DIR, PULSEAUDIO_LIBRARY, and
> PULSEAUDIO_MAINLOOP_LIBRARY.  It shouldn't even be finding the host's
> cmake configuration during a cross-compile!

I'm not familiar enough with CMake to tell you what's going on. Are you
using the mingw_cmake (or mingw32_cmake/mingw64_cmake) macros to build
the package?
> 
> The problem seems to be
> in /usr/share/mingw/Toolchain-mingw{32,64}.cmake -- it looks like it
> needs a "SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)" line.
> 
This particular parameter is currently already set to 'NEVER' in the
mingw-filesystem package. As mentioned before I'm not that familiar with
CMake and I don't know what this parameter does. If you believe this
parameter should be changed then I would recommend you to file a
bugreport against mingw-filesystem with rationale why it should be
changed.

> Also, it seems like there would have to be mingw{32,64}-cmake and
> mingw64-cmake packages, just to provide /usr/share/cmake/Modules --
> executables wouldn't be necessary.
> 
Do you mean that you want to have a mingw-cmake package which only owns
the folders %{mingw32_sysroot}/share/cmake/Modules and
%{mingw64_sysroot}/share/cmake/Modules and doesn't have any other
content? In that case I would be better to add this folder to the
mingw-filesystem package.

Regards,

Erik van Pienbroek





More information about the mingw mailing list