skipping the kdeinit magic on windows (Re: KDE/kdebase/apps/konqueror)
Ralf Habacker
ralf.habacker at freenet.de
Sun Apr 6 14:26:40 CEST 2008
Ralf Habacker schrieb:
> David Faure schrieb:
>> On Thursday 03 April 2008, Ralf Habacker wrote:
>>
>>> David Faure schrieb:
>>>
>>>> On Wednesday 02 April 2008, Ralf Habacker wrote:
>>>>
>>>>> SVN commit 793038 by habacker:
>>>>>
>>>>> kdeinit modules are not supported on win32
>>>>>
>>>>> M +10 -6 client/CMakeLists.txt M +11 -5
>>>>> src/CMakeLists.txt
>>>>>
>>>>> --- trunk/KDE/kdebase/apps/konqueror/client/CMakeLists.txt
>>>>> #793037:793038
>>>>> @@ -10,13 +10,17 @@
>>>>>
>>>>> kde4_add_app_icon(kfmclient_SRCS
>>>>> "${KDE4_ICON_INSTALL_DIR}/oxygen/*/apps/system-file-manager.png")
>>>>>
>>>>> -kde4_add_kdeinit_executable( kfmclient NOGUI ${kfmclient_SRCS})
>>>>> +if (WIN32)
>>>>> + add_definitions(-Dkdemain=main)
>>>>> + kde4_add_executable(kfmclient ${kfmclient_SRCS})
>>>>> + target_link_libraries(kfmclient ${KDE4_KIO_LIBS} )
>>>>> +else (WIN32)
>>>>> + kde4_add_kdeinit_executable( kfmclient NOGUI ${kfmclient_SRCS})
>>>>> + target_link_libraries(kdeinit_kfmclient ${KDE4_KIO_LIBS} )
>>>>> + install(TARGETS kdeinit_kfmclient DESTINATION
>>>>> ${INSTALL_TARGETS_DEFAULT_ARGS} )
>>>>> + target_link_libraries( kfmclient kdeinit_kfmclient )
>>>>> +endif (WIN32)
>>>>>
>>>> Ouch. But we define kdeinit modules everywhere in the source code.
>>>> Maintaining CMakeLists.txt files
>>>> like this one is going to be horrible.
>>>>
>>>> How about making kde4_add_kdeinit_executable do what's right for
>>>> Windows, i.e. creating a static lib
>>>> kdeinit_foo with -Dkdemain-main, and then the normal stuff from the
>>>> CMakeLists.txt will work:
>>>>
>>>> target_link_libraries(kdeinit_kfmclient ${KDE4_KIO_LIBS} )
>>>> install(TARGETS kdeinit_kfmclient DESTINATION
>>>> ${INSTALL_TARGETS_DEFAULT_ARGS} )
>>>>
>>> You are aware that you then install an obsolate static library ?
>>
>> Ah, indeed.
>>
>>
>>>> target_link_libraries( kfmclient kdeinit_kfmclient )
>>>>
>>>> (I think/hope that the dependencies of the static lib are used for
>>>> the binary)
>>>>
>>>>
>>> would it not be possible to have something like the following
>>>
>>> kde4_add_kdeinit_executable(kfmclient ... )
>>> kde4_target_link_library(kfmclient ... )
>>> kde4_install(TARGETS kfmclient ... )
>>> which would make it possible to hide all the internal platform
>>> depending stuff into those cmake macros.
>>>
>>
>> I agree. But this is Alex's call really -> moving discussion to
>> kde-buildsystem.
>>
>>
After some private discussion with Alex and Christian I have prepared a
patch which adds the following platform independent cmake macros to
KDE4Macros.cmake
kde4_kdeinit_add_executable(target options sources)
kde4_kdeinit_link_libraries(target options libraries)
kde4_kdeinit_install(target options)
This api makes it possible to skip the kdeinit magic on windows without
any further patching of package CMakeLists.txt. (See appended testcase
for konquerors kfmclient)
The appended patch contains the win32 and non win32 implementations of
the above mentioned macros taken from the macro
kde_add_kdeinit_executable which will be obsolate now. I've tried hard
to make sure it will work on unix abe before by inspecting the macro
kde_add_kdeinit_executable.
Any problems with this patch ?
Ralf
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kdelibs-cmake-modules-kde4macros-cmake.patch
Url: http://mail.kde.org/pipermail/kde-buildsystem/attachments/20080406/38479235/attachment.ksh
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kdebase-apps-konqueror-client-cmaelists-txt.patch
Url: http://mail.kde.org/pipermail/kde-buildsystem/attachments/20080406/38479235/attachment-0001.ksh
More information about the Kde-buildsystem
mailing list