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