KDE4 on cygwin, was: Re: KDE/kdelibs/cmake/modules

Yaakov (Cygwin/X) yselkowitz at users.sourceforge.net
Sun Jul 5 23:58:02 CEST 2009


On 05/07/2009 11:23, Alexander Neundorf wrote:
> Is anybody trying to build KDE4 for cygwin ?

Yes, me.  When habacker and the kde-cygwin group changed focus to the 
native Win32 port of Qt/KDE, I began providing Qt3.3/KDE3.5 packages 
through my Cygwin Ports project.  With an upcoming major update to 
Cygwin, I'm now working on KDE4 packages as well.

I have most modules, save kdebase-workspace, built and running; e.g. 
here's Konqueror 4.2:

https://sourceforge.net/project/screenshots.php?group_id=99645

Right now I'm submitting patches for kdelibs to bugzilla:

https://bugs.kde.org/show_bug.cgi?id=130219

I plan to post patches for other modules which need (some build 
completely OOTB) after 4.3.

> Is this part of the patch really correct ?
>
> --- origsrc/kdelibs-4.2.4/cmake/modules/KDE4Macros.cmake
> +++ src/kdelibs-4.2.4/cmake/modules/KDE4Macros.cmake
> @@ -567,6 +569,8 @@ macro (KDE4_ADD_PLUGIN _target_NAME _wit
>
>      if (_first_SRC)
>         set_target_properties(${_target_NAME} PROPERTIES PREFIX "")
> +   else (_first_SRC)
> +      set_target_properties(${_target_NAME} PROPERTIES PREFIX "lib")
>      endif (_first_SRC)
>
>      if (WIN32)
>
> ---------------
>
> This patch is inside the following macro:
> macro (KDE4_ADD_PLUGIN _target_NAME _with_PREFIX)
> #is the first argument is "WITH_PREFIX" then keep the standard "lib" prefix,
> otherwise set the prefix empty
>
> I.e. the old version removed the default "lib" prefix on UNIX systems by
> default. If WITH_PREFIX was used, it did not remove the "lib" prefix on UNIX
> systems, but also on Windows systems it did not add a "lib" prefix.
> With the patch it seems to add a "lib" prefix, also on Windows, also for MSVC.
>
> Do we want that ?

Does CMake use an empty CMAKE_SHARED_MODULE_PREFIX on MSVC?

It's up to Ralf then; if that negatively effects him, then a if(NOT 
WIN32) should be added inside the else(_first_SRC).

> if (WIN32)
>     if(CYGWIN)
>        message(FATAL_ERROR "Cygwin is NOT supported, use mingw or MSVC to build
> KDE4.")
>     endif(CYGWIN)

I am working on pushing several patches into Cygwin's cmake (and, 
hopefully, upstream) to make CMake behave correctly on Cygwin; one of 
those patches removes the WIN32 define on Cygwin, since many packages 
(including, but not only, KDE) use WIN32 for (in Qt parlance) 
Q_OS_WIN/Q_WS_WIN, where Cygwin is Q_OS_{CYGWIN,UNIX}/Q_WS_X11.

So yes, if someone tries to build KDE4 with a cmake which defines WIN32, 
it is certainly not supported and the error is justified (although the 
message could be changed to say that only the combination of 
Cygwin/WIN32 is not supported, but Cygwin/X11 is.)


Yaakov
Cygwin Ports


More information about the Kde-buildsystem mailing list