Re: Templates for frameworks CMake files

2013-09-25 Thread Aurélien Gâteau
On Tuesday 24 September 2013 16:58:36 Stephen Kelly wrote:
 Aurélien Gâteau wrote:
  Hi,
  
  I have been playing around with itemviews CMake files and put together
  some templates for the top level CMakeLists.txt and *Config.cmake.in. You
  can find them attached there. Any one against me adding those to the
  repository?
  
  Aurélien
  CMakeLists.txt
  
cmake_minimum_required(VERSION 2.8.11)
 
 This template will be out of date whenever we require a new cmake.
 
   project(FooBar)
   
   find_package(ECM 0.0.8 REQUIRED NO_MODULE)
 
 The latest ECM is 0.0.9

Just bumped the version number. Interestingly no existing framework requires 
it yet.

   set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
   
   set(REQUIRED_QT_VERSION 5.2.0)
 
 ECM and Qt version bumps are not as much an issue as the cmake one. The ECM
 and Qt version deps are not as likely to change.

I don't understand why you think specifying the cmake version is an issue: it 
should be easy to update the template when this happens, isn't it?

   # Required Qt5 components to build this framework
   # For example:
   # find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS
   # Widgets)
 
 Simplify by putting NO_MODULE before REQUIRED and removing COMPONENTS:
 
  find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED Widgets)

Done.
 
   if(NOT kdelibs_SOURCE_DIR)
   find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler
   InstallDirs) # Required KF5 frameworks to build this framework
 
 I still think this stuff is odd. We're building KF5, yet we need to find KF5
 to do so.

This line is only used when building the framework outside of kdelibs, in this 
case we are not building KF5.
 
 snip
 
FooBarConfigVersion.cmake.in
@PACKAGE_INIT@
   
   # Required components to use this framework
   # For example:
   # find_dependency(Qt5Widgets @REQUIRED_QT_VERSION@)
   # find_dependency(KCoreAddons ${PACKAGE_VERSION})
 
 We might want to change this before you template it. Currently,
 
  find_package(KAnyTier2Framework)
 
 will result in finding its dependency with
 
  find_package(KDependentTier1Framework)
 
 ie, the dependency is not found by version unless a version is specified
 when finding KAnyTier2Framework. ie:
 
  find_package(KAnyTier2Framework 5.3)
 
 will call
 
  find_package(KDependentTier1Framework 5.3)
 
 However, it might make sense for even
 
  find_package(KAnyTier2Framework)
 
 to require the same or later version as KAnyTier2Framework.
 
 That would be another change that would affect your template, and which
 would make
 
  find_dependency(KCoreAddons ${PACKAGE_VERSION})
 
 'wrong'.
 
   set(FooBar_INSTALL_PREFIX @PACKAGE_CMAKE_INSTALL_PREFIX@)
 
 IMO this should be removed from all config files and not added to new ones:
 
  http://thread.gmane.org/gmane.comp.kde.devel.frameworks/1194/focus=1318
 
 It is unused and not useful or needed. ie
 
  git grep -l PACKAGE_CMAKE_INSTALL_PREFIX | xargs \
sed -i '/PACKAGE_CMAKE_INSTALL_PREFIX/d'
 
 and remove the CMAKE_INSTALL_PREFIX from the configure_package_config_file
 invocations.
 
   set_and_check(FooBar_INCLUDE_DIR @PACKAGE_INCLUDE_INSTALL_DIR@)
   set(FooBar_INCLUDE_DIRS ${FooBar_INCLUDE_DIR} )
 
 As the include dirs are encoded into the imported targets, this is
 superfluous. No one needs to use it, and it might contain different/out of
 date information compared to what is encoded in the target.
 
 If it is decided to remove them, then the INCLUDE_INSTALL_DIR should be
 removed from the configure_package_config_file too.

I removed those from the template as well.

I just filed a review request for the templates, which should make it easier 
to discuss, you can find it here:

https://git.reviewboard.kde.org/r/112928/

Aurélien
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: Templates for frameworks CMake files

2013-09-25 Thread Stephen Kelly
Aurélien Gâteau wrote:

 ECM and Qt version bumps are not as much an issue as the cmake one. The
 ECM and Qt version deps are not as likely to change.
 
 I don't understand why you think specifying the cmake version is an issue:
 it should be easy to update the template when this happens, isn't it?

Yes, I suppose.

 Simplify by putting NO_MODULE before REQUIRED and removing COMPONENTS:

find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED Widgets)
 
 Done.

Are you sure? The reviewboard shows otherwise.

 
   if(NOT kdelibs_SOURCE_DIR)
   find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler
   InstallDirs) # Required KF5 frameworks to build this framework
 
 I still think this stuff is odd. We're building KF5, yet we need to find
 KF5 to do so.
 
 This line is only used when building the framework outside of kdelibs, in
 this case we are not building KF5.

We use find_package(KF5) when building each KF5 framework, and when building 
the 'monolithic' (but temporary) kdelibs.git.

Thanks,

Steve.


___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: Templates for frameworks CMake files

2013-09-24 Thread Stephen Kelly
Aurélien Gâteau wrote:

 Hi,
 
 I have been playing around with itemviews CMake files and put together
 some templates for the top level CMakeLists.txt and *Config.cmake.in. You
 can find them attached there. Any one against me adding those to the
 repository?
 
 Aurélien
 CMakeLists.txt
   cmake_minimum_required(VERSION 2.8.11)

This template will be out of date whenever we require a new cmake.

  
  project(FooBar)
  
  find_package(ECM 0.0.8 REQUIRED NO_MODULE)

The latest ECM is 0.0.9

  set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
  
  set(REQUIRED_QT_VERSION 5.2.0)

ECM and Qt version bumps are not as much an issue as the cmake one. The ECM 
and Qt version deps are not as likely to change.

  # Required Qt5 components to build this framework
  # For example:
  # find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS
  # Widgets)

Simplify by putting NO_MODULE before REQUIRED and removing COMPONENTS:

 find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED Widgets)

  if(NOT kdelibs_SOURCE_DIR)
  find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler
  InstallDirs) # Required KF5 frameworks to build this framework

I still think this stuff is odd. We're building KF5, yet we need to find KF5 
to do so.

snip

   FooBarConfigVersion.cmake.in
   @PACKAGE_INIT@
  
  # Required components to use this framework
  # For example:
  # find_dependency(Qt5Widgets @REQUIRED_QT_VERSION@)
  # find_dependency(KCoreAddons ${PACKAGE_VERSION})

We might want to change this before you template it. Currently,

 find_package(KAnyTier2Framework)

will result in finding its dependency with 

 find_package(KDependentTier1Framework)

ie, the dependency is not found by version unless a version is specified 
when finding KAnyTier2Framework. ie:

 find_package(KAnyTier2Framework 5.3)

will call 

 find_package(KDependentTier1Framework 5.3)

However, it might make sense for even 

 find_package(KAnyTier2Framework)

to require the same or later version as KAnyTier2Framework. 

That would be another change that would affect your template, and which 
would make 

 find_dependency(KCoreAddons ${PACKAGE_VERSION})

'wrong'.

  
  set(FooBar_INSTALL_PREFIX @PACKAGE_CMAKE_INSTALL_PREFIX@)

IMO this should be removed from all config files and not added to new ones:

 http://thread.gmane.org/gmane.comp.kde.devel.frameworks/1194/focus=1318

It is unused and not useful or needed. ie  

 git grep -l PACKAGE_CMAKE_INSTALL_PREFIX | xargs \
   sed -i '/PACKAGE_CMAKE_INSTALL_PREFIX/d'

and remove the CMAKE_INSTALL_PREFIX from the configure_package_config_file 
invocations.

  set_and_check(FooBar_INCLUDE_DIR @PACKAGE_INCLUDE_INSTALL_DIR@)
  set(FooBar_INCLUDE_DIRS ${FooBar_INCLUDE_DIR} )

As the include dirs are encoded into the imported targets, this is 
superfluous. No one needs to use it, and it might contain different/out of 
date information compared to what is encoded in the target.

If it is decided to remove them, then the INCLUDE_INSTALL_DIR should be 
removed from the configure_package_config_file too.

  include(${CMAKE_CURRENT_LIST_DIR}/FooBarTargets.cmake)

Thanks,

Steve.


___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: Templates for frameworks CMake files

2013-09-24 Thread Alexander Neundorf
On Tuesday 24 September 2013, Stephen Kelly wrote:
 Aurélien Gâteau wrote:
  Hi,
  
  I have been playing around with itemviews CMake files and put together
  some templates for the top level CMakeLists.txt and *Config.cmake.in. You
  can find them attached there. Any one against me adding those to the
  repository?
  
  Aurélien
  CMakeLists.txt
  
cmake_minimum_required(VERSION 2.8.11)
 
 This template will be out of date whenever we require a new cmake.
 
   project(FooBar)
   
   find_package(ECM 0.0.8 REQUIRED NO_MODULE)
 
 The latest ECM is 0.0.9
 
   set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
   
   set(REQUIRED_QT_VERSION 5.2.0)
 
 ECM and Qt version bumps are not as much an issue as the cmake one. The ECM
 and Qt version deps are not as likely to change.
 
   # Required Qt5 components to build this framework
   # For example:
   # find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS
   # Widgets)
 
 Simplify by putting NO_MODULE before REQUIRED and removing COMPONENTS:
 
  find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED Widgets)
 
   if(NOT kdelibs_SOURCE_DIR)
   find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler
   InstallDirs) # Required KF5 frameworks to build this framework
 
 I still think this stuff is odd. We're building KF5, yet we need to find
 KF5 to do so.


If you have a better idea, feel free to change it.
Those files contain KDE-related stuff, the KDE compiler- and cmake settings 
and KDE install dirs.

There is no tier0 kde-cmake-modules repository, that was not wanted. Still, by 
finding (loading) FindKF5.cmake we load those settings, to avoid having a 
tier0 frameworks.

Alex
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: Templates for frameworks CMake files

2013-09-13 Thread Aurélien Gâteau
On Friday 13 September 2013 11:30:32 Aurélien Gâteau wrote:
 Hi,
 
 I have been playing around with itemviews CMake files and put together some
 templates for the top level CMakeLists.txt and *Config.cmake.in. You can
 find them attached there. Any one against me adding those to the
 repository?

As pointed out by krop on IRC, FooBarConfigVersion.cmake.in should really be 
FooBarConfig.cmake.in.

Aurélien
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel