<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/109157/">http://git.reviewboard.kde.org/r/109157/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On February 25th, 2013, 9:48 p.m. UTC, <b>Edward Hades Toroshchin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Why do you want the intermediate libs at all?</pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">In general, all points mentioned in http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library#Motivation hold here, especially "This approach is easy to use and helps organize the project source tree.". (Note: approach used here doesn't use CMake "Object Libraries" at all)</pre>
<br />










<p>- Matěj</p>


<br />
<p>On February 25th, 2013, 9:36 p.m. UTC, Matěj Laitl wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Amarok and Build System.</div>
<div>By Matěj Laitl.</div>


<p style="color: grey;"><i>Updated Feb. 25, 2013, 9:36 p.m.</i></p>






<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Hi fellow devs, this is a preview of how I'd like to clean up our (Amarok) buildsystem. The main idea is that every directory should has its own CMakeLists.txt, forming a small static library (build-time only), these small "intermediate" static libs get linked to bigger libraries like amaroklib.so etc. This preview does it on the shared/ directory which is turned into a separate shared library first. This review request are 3 commits squashed. Please speak up if you see some issues or something is not clear/too ugly for you.


Biggie: introduce libamarokshared.so library to avoid building things in shared/ twice

Shared libraries exist to *cough* share built code, use them! This is first part
of much larger buildsystem changes planned in Randa 2012.

This also brings some other changes that were needed, namely avoiding UTILITIES_BUILD,
changing Meta::Tag::writeTags() slightly etc.

@all git builders: you may need to remove build/CMakeCache.txt as some cached variables
may become invalid.

@Patrick: this needs at least build testing on Windows to ensure I've done the
KDE_IMPORT/EXPORT macros right.

CCMAIL: amarok-devel@kde.org
CCMAIL: Patrick von Reth <vonreth@kde.org>



Split AMAROK_EXPORT and AMAROK_CORE_EXPORT code and move to appropriate locations

...made possible by the previous commit.



buildsystem: start transition to per-directory CMakeLists.txt; introduce AmarokIntermediateLib.cmake

This is an example how transitioning to per-directory CMakeLists.txt
can be made. We introduce AmarokIntermediateLib.cmake file with
convenience macros amarok_add_intermediate_library and
amarok_link_intermediate_libraries.

We immediately use them to make shared/collectionscanner and
shared/collectionscanner free-standing with their own CMakeLists.txt</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Builds, works, tests pass</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>CMakeLists.txt <span style="color: grey">(d96cbc96de94fcc898b6d8af64c65634a28dd594)</span></li>

 <li>cmake/modules/AmarokIntermediateLib.cmake <span style="color: grey">(PRE-CREATION)</span></li>

 <li>shared/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>shared/FileType.h <span style="color: grey">(1b6facf66384bb70842c30e5a8ccd771c3009e1d)</span></li>

 <li>shared/FileType.cpp <span style="color: grey">(f02605845778b6d99b74155fdd8974082bb915fd)</span></li>

 <li>shared/FileTypeResolver.cpp <span style="color: grey">(f7c3eab8c9287f238c4eeec3a66def94aade3254)</span></li>

 <li>shared/MetaReplayGain.h <span style="color: grey">(bf130cfe6f3a05b3852d6508447b3fc74e560e23)</span></li>

 <li>shared/MetaTagLib.h <span style="color: grey">(cfa9910a7a2b0b24d8051c1c01866d239fdbe891)</span></li>

 <li>shared/MetaTagLib.cpp <span style="color: grey">(2e785e03b07193367d42491602f3e33cd862420c)</span></li>

 <li>shared/README <span style="color: grey">(3d84f0deca111240087c97fc2290f1c6748a3b51)</span></li>

 <li>shared/TagsFromFileNameGuesser.h <span style="color: grey">(7f4443ef7c662970931a1fc06471c00bf053ab5d)</span></li>

 <li>shared/amarok_export.h <span style="color: grey">(cdab8033e35dcca817f275211b5a3bef4652a2c2)</span></li>

 <li>shared/amarokshared_export.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>shared/collectionscanner/Album.h <span style="color: grey">(91c3501ce615c170d440564a0e57fd2a30840e5b)</span></li>

 <li>shared/collectionscanner/Album.cpp <span style="color: grey">(520452360e2b5ed4f1b52f6ff270721d08996bf3)</span></li>

 <li>shared/collectionscanner/BatchFile.h <span style="color: grey">(61192770366e17e85637729b051a2f7a353cfc48)</span></li>

 <li>shared/collectionscanner/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>shared/collectionscanner/Directory.h <span style="color: grey">(03f07ce3f189825bdc2eeff6e7c79fea2ed0ad8c)</span></li>

 <li>shared/collectionscanner/Directory.cpp <span style="color: grey">(a6b02f86d8473645fd56958f3c5a6df01b65c2e1)</span></li>

 <li>shared/collectionscanner/Playlist.h <span style="color: grey">(420bafc32bb80efe170c99b7e783163a9b4801b6)</span></li>

 <li>shared/collectionscanner/ScanningState.h <span style="color: grey">(dedf04998b4c0cd501fb22c8814754ed622c99dc)</span></li>

 <li>shared/collectionscanner/Track.h <span style="color: grey">(96d243e898aa06319fa7347239098d6486d63adb)</span></li>

 <li>shared/tag_helpers/APETagHelper.h <span style="color: grey">(2da873434b536af62cbbb546790dd90d1f733496)</span></li>

 <li>shared/tag_helpers/ASFTagHelper.h <span style="color: grey">(99818949e8781847980a88ae59c7f7dd47ee955f)</span></li>

 <li>shared/tag_helpers/ASFTagHelper.cpp <span style="color: grey">(966c29838106e722ff8606cc32d35c417ddf565f)</span></li>

 <li>shared/tag_helpers/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>shared/tag_helpers/ID3v2TagHelper.h <span style="color: grey">(5aec4ed82b7b6fc37d52b9809452ffdb3063af9c)</span></li>

 <li>shared/tag_helpers/ID3v2TagHelper.cpp <span style="color: grey">(7d50ca64888f856541cb6c56b3d6e720d17a4df8)</span></li>

 <li>shared/tag_helpers/MP4TagHelper.h <span style="color: grey">(8a5b1851939b8f20f450a8852db1d1d35e478b3c)</span></li>

 <li>shared/tag_helpers/MP4TagHelper.cpp <span style="color: grey">(37fcc1767a931f76a04fcd9fa72031594a0633e3)</span></li>

 <li>shared/tag_helpers/StringHelper.h <span style="color: grey">(6b31b684abf2ef5cb4eb3736f18b6f31a1729037)</span></li>

 <li>shared/tag_helpers/TagHelper.h <span style="color: grey">(898a76bb1d7e73afdf84a1d4e466cf314b53b807)</span></li>

 <li>shared/tag_helpers/TagHelper.cpp <span style="color: grey">(6909483a4df8d880143b5250991ad21daff129bb)</span></li>

 <li>shared/tag_helpers/VorbisCommentTagHelper.h <span style="color: grey">(c5e87b3df344baecefb5d1d194f004a566d69804)</span></li>

 <li>shared/tag_helpers/VorbisCommentTagHelper.cpp <span style="color: grey">(85689fb5db0ad26333281454b7826688a4ad0503)</span></li>

 <li>src/CMakeLists.txt <span style="color: grey">(6f453e2097c861e085c0c9c3c4c1534a45d477f8)</span></li>

 <li>src/EngineController.h <span style="color: grey">(f4835bc97e6deb84c9c556e9859cfede5bf48f04)</span></li>

 <li>src/amarok_export.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/browsers/playlistbrowser/UserPlaylistModel.h <span style="color: grey">(186837bc07df982d31a394333f5974b06669abd2)</span></li>

 <li>src/core-impl/capabilities/AlbumActionsCapability.h <span style="color: grey">(789e6c7106d7db5dae6bf4a4baffd4c878a70ac0)</span></li>

 <li>src/core-impl/capabilities/timecode/TimecodeBoundedPlaybackCapability.h <span style="color: grey">(05749d35ecc5d34f4567f17f3c5f2e905abdaff2)</span></li>

 <li>src/core-impl/capabilities/timecode/TimecodeEditCapability.h <span style="color: grey">(bfd50407acbfe1d5b1f02186032c927cd7b04b39)</span></li>

 <li>src/core-impl/collections/db/sql/CMakeLists.txt <span style="color: grey">(d6ba891c93327dbe5fa21eb0499ce83ef6523151)</span></li>

 <li>src/core-impl/collections/db/sql/SqlMeta.cpp <span style="color: grey">(2032a2b03c40a66f91bbc6afb0cfc8f4244a410b)</span></li>

 <li>src/core-impl/collections/ipodcollection/CMakeLists.txt <span style="color: grey">(1dc5bce67c88d7207f76c3ca3590e66a876549b9)</span></li>

 <li>src/core-impl/collections/playdarcollection/CMakeLists.txt <span style="color: grey">(afa9300be9e6791d8e753bbf2cf0529408d639da)</span></li>

 <li>src/core-impl/collections/proxycollection/ProxyCollectionMeta.h <span style="color: grey">(aeabcfe0aa4442ae7899c8b082a4ff52ec41e9c9)</span></li>

 <li>src/core-impl/collections/support/jobs/WriteTagsJob.cpp <span style="color: grey">(21d5c1b170b8a1809276ca84bf69bded3c511795)</span></li>

 <li>src/core-impl/collections/umscollection/CMakeLists.txt <span style="color: grey">(ff3dd39116eefe0ea1cb6bffe9b4f14cfc6c22f8)</span></li>

 <li>src/core-impl/collections/umscollection/UmsCollection.cpp <span style="color: grey">(08f40b379a155ff1bed67d11acd01c46c4687448)</span></li>

 <li>src/core-impl/meta/file/File.h <span style="color: grey">(10132c6cda8444a3653c304d8d366239691b20e5)</span></li>

 <li>src/core-impl/meta/file/File_p.h <span style="color: grey">(652787010099e39acbac5baf56c1b234fbc1cbb6)</span></li>

 <li>src/core-impl/meta/proxy/MetaProxy.h <span style="color: grey">(7097a59a33938f8df8c926cea61ddc3fe22adc97)</span></li>

 <li>src/core-impl/playlists/providers/user/UserPlaylistProvider.h <span style="color: grey">(48d020735775e0112fc6548882f66fca8ebce05d)</span></li>

 <li>src/core-impl/playlists/types/file/PlaylistFile.h <span style="color: grey">(4322da992261e4fac564a7bcd5bc2d5ae1fec989)</span></li>

 <li>src/core-impl/support/PersistentStatisticsStore.h <span style="color: grey">(752c7044e7ef62b88dd1947b3cbbae6e868583eb)</span></li>

 <li>src/core/CMakeLists.txt <span style="color: grey">(2809dc3db1525d87d78fcbc276c7b4aa0f60b203)</span></li>

 <li>src/core/amarokcore_export.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/core/capabilities/ActionsCapability.h <span style="color: grey">(6cf53d93d091bc6cdf02da5a16b8e23a841a3d59)</span></li>

 <li>src/core/capabilities/BookmarkThisCapability.h <span style="color: grey">(b0072e09e2f2500f078e062f959107265c7497a1)</span></li>

 <li>src/core/capabilities/Capability.h <span style="color: grey">(ba7dadccf72373954b1838ea6c10bb24e52d8da3)</span></li>

 <li>src/core/capabilities/CollectionImportCapability.h <span style="color: grey">(ed4fdc64d98d3ce1c4a3c590a886601aacb1ba89)</span></li>

 <li>src/core/capabilities/CollectionScanCapability.h <span style="color: grey">(0b650c54e4e074797205db6ca44b334f00a8160d)</span></li>

 <li>src/core/capabilities/EditCapability.h <span style="color: grey">(9cc76be585d3ee2ce7ba0a10ca1cbc58b58113c2)</span></li>

 <li>src/core/capabilities/FindInSourceCapability.h <span style="color: grey">(f720dde4e6e556233003e2cd0a1058979fafe717)</span></li>

 <li>src/core/capabilities/OrganiseCapability.h <span style="color: grey">(547e1b78ff9f2043eed2f6c6ec3d582ecc7d16da)</span></li>

 <li>src/core/capabilities/ReadLabelCapability.h <span style="color: grey">(5536d9967914c1e98589212448c85a87d11a6035)</span></li>

 <li>src/core/capabilities/SourceInfoCapability.h <span style="color: grey">(0c58878b7807b486b5d57127bff2588b17892d7a)</span></li>

 <li>src/core/capabilities/StreamInfoCapability.h <span style="color: grey">(f53640229f28ea3c76798ee9132ae9393d73a9e9)</span></li>

 <li>src/core/capabilities/TranscodeCapability.h <span style="color: grey">(be5f217d7cc19683e9fd25fb3081c1dbe276afa4)</span></li>

 <li>src/core/capabilities/WriteLabelCapability.h <span style="color: grey">(b23700dce6d881bafd2235ab858106cfed720061)</span></li>

 <li>src/core/collections/Collection.h <span style="color: grey">(48f9a08d3b008028e9c88b77c170522122a68671)</span></li>

 <li>src/core/collections/CollectionLocation.h <span style="color: grey">(11a64d1be7272b38cbd6c816986c509cf75e0618)</span></li>

 <li>src/core/collections/CollectionLocationDelegate.h <span style="color: grey">(6f39c19792ba2e245a5cba74bc8b1a809c21d80c)</span></li>

 <li>src/core/collections/QueryMaker.h <span style="color: grey">(a30b94fef31bcdea29e3bc8a60ed1fbee067879f)</span></li>

 <li>src/core/collections/support/SqlStorage.h <span style="color: grey">(c2ce8adad6a8e9b15d5da30a4d4f7943757f2726)</span></li>

 <li>src/core/collections/support/TrackForUrlWorker.h <span style="color: grey">(c41917605fb41a6fbd6610a22875cd4e887a15fa)</span></li>

 <li>src/core/interfaces/Logger.h <span style="color: grey">(346fbb623b2843c6424c491780a660feb017fca5)</span></li>

 <li>src/core/interfaces/MetaCapability.h <span style="color: grey">(14885b0a81d1c3b4585795a778ac146fac72b746)</span></li>

 <li>src/core/meta/Meta.h <span style="color: grey">(d0fea2064bb2107478350d2464265323166f9707)</span></li>

 <li>src/core/meta/Statistics.h <span style="color: grey">(3007592b604bcc5d6731639413d445095be2dd79)</span></li>

 <li>src/core/meta/support/MetaConstants.h <span style="color: grey">(97881a04a5579203fb745c6c6d5b1c13c9126055)</span></li>

 <li>src/core/meta/support/MetaKeys.h <span style="color: grey">(3c97cc9a3da422059dac880a39b7cf9a58887e18)</span></li>

 <li>src/core/meta/support/MetaUtility.h <span style="color: grey">(66dce9203b883f8b31d3f54d2170390863c51d53)</span></li>

 <li>src/core/playlists/Playlist.h <span style="color: grey">(b4e4f404a2c07d6dc66e0cb1c4f8e31f12bd10a3)</span></li>

 <li>src/core/playlists/PlaylistFormat.h <span style="color: grey">(21baac68ec359e4dd38a28af05cec8892f4603a9)</span></li>

 <li>src/core/playlists/PlaylistProvider.h <span style="color: grey">(365792de089a9263fb80591ecffbe695cfc56bed)</span></li>

 <li>src/core/podcasts/PodcastMeta.h <span style="color: grey">(cacc9948709241b8b43df5c01e95f9756d37476b)</span></li>

 <li>src/core/support/Amarok.h <span style="color: grey">(9c6f37ac78796f60c57e1f393ace47f38ce68d41)</span></li>

 <li>src/core/support/Components.h <span style="color: grey">(d8cdd3ff84fecb92882b60d47fcfb115b7896b04)</span></li>

 <li>src/core/support/Debug.h <span style="color: grey">(085d033a3d5a7f06b7cd64b82519de8ed9d927fe)</span></li>

 <li>src/core/support/PluginFactory.h <span style="color: grey">(a16259aad84ed7da3fb396bc9fd6adf9b40c99cc)</span></li>

 <li>src/core/support/SmartPointerList.h <span style="color: grey">(37d0bab7a0d9c3afd65a10a6ba895cda07e752b5)</span></li>

 <li>src/core/transcoding/TranscodingConfiguration.h <span style="color: grey">(d0738fb4ac01b77db252b2cc13a82b4e2c8bb9e7)</span></li>

 <li>src/core/transcoding/TranscodingController.h <span style="color: grey">(5e313e45cc303832bfdf34ef4517687ea4aab960)</span></li>

 <li>src/core/transcoding/TranscodingFormat.h <span style="color: grey">(ce9ed198d8ea20c5f5e194285eab6513a970b163)</span></li>

 <li>src/core/transcoding/TranscodingProperty.h <span style="color: grey">(9cc10aa17a665ac9208baae0543936efca772be3)</span></li>

 <li>src/covermanager/CoverFetchingActions.h <span style="color: grey">(a3d2112477a091c02ce0269a80afaca1865c4af5)</span></li>

 <li>src/covermanager/CoverViewDialog.h <span style="color: grey">(41478911d52ecfca0a6624f8fea40dd1523cd024)</span></li>

 <li>src/dbus/mpris1/PlayerHandler.h <span style="color: grey">(8f7a77fb2fb41fef21afb895be29b3d42b27b3b3)</span></li>

 <li>src/dialogs/TrackOrganizer.h <span style="color: grey">(8c4ab84d2d9bf0c35c4e000169c10c61d39a2dee)</span></li>

 <li>src/playlist/PlaylistActions.h <span style="color: grey">(e8e541be8d60e87156f716ee6efd10ed948fd6cb)</span></li>

 <li>src/playlist/PlaylistController.h <span style="color: grey">(368b89e6707582c50d8a40c38a6dd53d85ea2977)</span></li>

 <li>src/playlist/PlaylistModel.h <span style="color: grey">(bf2052c74cf5401c5cc0fff8951662be0fabc591)</span></li>

 <li>src/scriptengine/MetaTypeExporter.h <span style="color: grey">(334dc1e60bcbbe5301db47f2f0fbd57a83c05a79)</span></li>

 <li>src/services/gpodder/CMakeLists.txt <span style="color: grey">(f2cca2e78d65580deb6cf5f3ce26ac2d05089fd5)</span></li>

 <li>tests/core-impl/collections/db/sql/CMakeLists.txt <span style="color: grey">(bf387af80ae541d464ec1090e153e5b35ec8bc24)</span></li>

 <li>tests/core-impl/collections/db/sql/TestSqlScanManager.cpp <span style="color: grey">(26b6943d816cc6045eafc6a83f1d00f7e309a99e)</span></li>

 <li>utilities/collectionscanner/CMakeLists.txt <span style="color: grey">(f3d9f40dd97a793cd184384b962d45e87539c7a8)</span></li>

 <li>utilities/collectionscanner/CollectionScanner.h <span style="color: grey">(de9309ce7ead5553004996e320d73fbb5d92058a)</span></li>

 <li>utilities/collectionscanner/CollectionScanner.cpp <span style="color: grey">(bac3e59ae6c460d08b51634d84570d36482c3d0c)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/109157/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>








  </div>
 </body>
</html>