Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!

2013-04-22 Thread Biddiscombe, John A.
May I ask one question related to the Target Usage Requirements ...

For HDF5 (for example), the user might enable Parallel IO, which requires MPI. 
When enabled, the hdf5 cmakelists use find_package to get MPI and all is fine.

Users of hdf5 might not know that they are using an hdf which has parallel IO 
enabled, and compilation is complicated by the unexpected dependency on mpi 
libs and includes

Is this new feature designed to resolve this long standing irritation so that 
when installed, the hdf5 will add the mpi dependency behind the scenes? If so, 
I am delighted and would like to test it out on the hdf5 distribution. If there 
is a link to an example I can copy from, please say.

Thanks

JB


-Original Message-
From: cmake-developers-boun...@cmake.org 
[mailto:cmake-developers-boun...@cmake.org] On Behalf Of Robert Maynard
Sent: 19 April 2013 15:24
To: cmake-developers@cmake.org
Subject: [cmake-developers] CMake 2.8.11-rc3 ready for testing!

The CMake 2.8.11 release candidate continues. This is the last RC unless a 
critical, must-fix issue is found. You can find the source and binaries here:
http://www.cmake.org/files/v2.8/?C=M;O=D

Some of the notable changes in this release are:
- Introduced Target Usage Requirements
  - Targets can specify usage requirements for their consumers such as include 
directories
and preprocessor definitions; previously only link dependencies were 
supported
  - target_link_libraries(myexe yourlib) can now build myexe sources with 
requirements specified
by yourlib
  - Added target_include_directories and target_compile_definitions commands 
with
PUBLIC/PRIVATE/INTERFACE options
  - See design and development discussion at
http://community.kde.org/Frameworks/Epics/CMake_target_usage_requirements

- Introduced a Generator Toolset selection for VS = 10 and Xcode = 3
  - Tell the IDEs which compiler toolchain to use
  - ex. Use VS 9 tools under VS 10: -G Visual Studio 10 -T v90
- Introduced ExternalData Module
- Keep source trees lightweight by storing data separately
- Reference data unambiguously from source tree by content hash
- Fetch on-demand during build from local or remote resources
- CMake: Sublime Text Generator added that supports both Make and Ninja
- CMake: Added support for Texas Instruments C6 and up compilers
- CMake: Improve OpenBSD support
- CMake: Support for Windows CE with VS 8 and 9 generators
- CPack: Added Support for 64bit NSIS
- CPack: Added WiX Package Generator
- ExternalProject: Will run git fetch less often
- FindBoost: Major overhaul of searching and result caching
- FindCUDA: Now has support for separable compilation
- FindQt4: Overall improvements to finding Qt and importing targets
- FindSquish: Added support for squish 4
- GetPrerequisites: Port to MinGW with objdump

The bug tracker change log page for this version is at:
http://public.kitware.com/Bug/changelog_page.php?version_id=103

Following is the complete list of changes in this rc since the previous rc. 
Please try this version of CMake on your projects and report any issues to the 
list or the bug tracker. This release candidate will become the final release 
for 2.8.11 unless a serious issue is reported.

Changes in CMake 2.8.11-rc3 (since 2.8.11-rc2)
--
Brad King (1):
  get_filename_component: Document path components more clearly (#14091)

Rolf Eike Beer (1):
  try_compile: add missing fclose() to recently added error case

Stephen Kelly (1):
  Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property.
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!

2013-04-22 Thread Biddiscombe, John A.
One important extra point.

The MPI library was NOT built with cmake, but the HDF5 and the user's project 
would be. Not sure if that makes a difference

JB

From: Biddiscombe, John A.
Sent: 22 April 2013 16:46
To: 'Stephen Kelly'; cmake-developers@cmake.org
Subject: RE: [cmake-developers] CMake 2.8.11-rc3 ready for testing!


Sorry, I assumed too much familiarity with hdf5/mpi



Hdf5 has CMakelists.txt files and declares a number of targets. When built with 
parallel IO, hdf5 used find_package(MPI) to get the required libs and includes 
for the library to compile and link nicely with mpi. No problem



When you do a make install on hdf5, it creates a set of very nice cmake files

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-debug.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-release.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config-version.cmake

Which declare imported targets for debug and release and do everything right.



Except that if the user picks up HDF5 using the syntax

find_package(HDF5 NO_MODULE)

i.e. NOT using the findhdf5 (because we want to pick up the cmake config)



then the user's project has a 'hidden' dependency on mpi includes and libs and 
unless they add a find_package(mpi) to their project - and add the necessary 
include dirs. And links - theit build will fail



What I'd like to di, is in the target import declared by hdf5, add in this 
transitive link dependency to m pi.



In the past I was advised not to do this, but my hope is that this can be 
expressed nicely with the new syntax



Yes?



JB





-Original Message-
From: 
cmake-developers-boun...@cmake.orgmailto:cmake-developers-boun...@cmake.org 
[mailto:cmake-developers-boun...@cmake.org] On Behalf Of Stephen Kelly
Sent: 22 April 2013 16:35
To: cmake-developers@cmake.orgmailto:cmake-developers@cmake.org
Subject: Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!





Biddiscombe, John A. wrote:



 May I ask one question related to the Target Usage Requirements ...



 For HDF5 (for example), the user might enable Parallel IO, which

 requires MPI. When enabled, the hdf5 cmakelists use find_package to

 get MPI and all is fine.



Hi there,



I am not familiar with hdf5 or mpi.



What are you referring to when you say the hdf5 cmakelists ? Do you mean 
FindHDF5.cmake?





 Users of hdf5 might not know that they are using an hdf which has

 parallel IO enabled, and compilation is complicated by the unexpected

 dependency on mpi libs and includes



Can you be specific about what is more complicated? I'm not familiar with what 
is complicated.



 Is this new feature designed to resolve this long standing irritation

 so that when installed, the hdf5 will add the mpi dependency behind

 the scenes?



Sort of/maybe. It is designed for use with IMPORTED targets, which in general 
means that the upstream uses CMake and installs a Config.cmake file.

As there is a FindHDF5.cmake, I'm guessing that is not the case here.



However, it would be possible to create IMPORTED targets in the Find file.



However, there may be other ways of solving the problems you're experiencing 
regarding convenience, even without these features. Using these features has 
certain conveniences, but they don't seem to be what you're after. What you're 
after seems to be possible anyway. PNG_LIBRARIES contains ZLIB_LIBRARY for 
example, because it depends on it. Should HDF5_LIBRARIES contain MPI_LIBRARIES?



Sorry I can't give more useful information. Maybe someone else can.



Thanks,



Steve.





--



Powered by www.kitware.comhttp://www.kitware.com



Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html



Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ



Follow this link to subscribe/unsubscribe:

http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!

2013-04-22 Thread Biddiscombe, John A.
Sorry, I assumed too much familiarity with hdf5/mpi



Hdf5 has CMakelists.txt files and declares a number of targets. When built with 
parallel IO, hdf5 used find_package(MPI) to get the required libs and includes 
for the library to compile and link nicely with mpi. No problem



When you do a make install on hdf5, it creates a set of very nice cmake files

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-debug.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-release.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config.cmake

C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config-version.cmake

Which declare imported targets for debug and release and do everything right.



Except that if the user picks up HDF5 using the syntax

find_package(HDF5 NO_MODULE)

i.e. NOT using the findhdf5 (because we want to pick up the cmake config)



then the user's project has a 'hidden' dependency on mpi includes and libs and 
unless they add a find_package(mpi) to their project - and add the necessary 
include dirs. And links - theit build will fail



What I'd like to di, is in the target import declared by hdf5, add in this 
transitive link dependency to m pi.



In the past I was advised not to do this, but my hope is that this can be 
expressed nicely with the new syntax



Yes?



JB





-Original Message-
From: cmake-developers-boun...@cmake.org 
[mailto:cmake-developers-boun...@cmake.org] On Behalf Of Stephen Kelly
Sent: 22 April 2013 16:35
To: cmake-developers@cmake.org
Subject: Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!





Biddiscombe, John A. wrote:



 May I ask one question related to the Target Usage Requirements ...



 For HDF5 (for example), the user might enable Parallel IO, which

 requires MPI. When enabled, the hdf5 cmakelists use find_package to

 get MPI and all is fine.



Hi there,



I am not familiar with hdf5 or mpi.



What are you referring to when you say the hdf5 cmakelists ? Do you mean 
FindHDF5.cmake?





 Users of hdf5 might not know that they are using an hdf which has

 parallel IO enabled, and compilation is complicated by the unexpected

 dependency on mpi libs and includes



Can you be specific about what is more complicated? I'm not familiar with what 
is complicated.



 Is this new feature designed to resolve this long standing irritation

 so that when installed, the hdf5 will add the mpi dependency behind

 the scenes?



Sort of/maybe. It is designed for use with IMPORTED targets, which in general 
means that the upstream uses CMake and installs a Config.cmake file.

As there is a FindHDF5.cmake, I'm guessing that is not the case here.



However, it would be possible to create IMPORTED targets in the Find file.



However, there may be other ways of solving the problems you're experiencing 
regarding convenience, even without these features. Using these features has 
certain conveniences, but they don't seem to be what you're after. What you're 
after seems to be possible anyway. PNG_LIBRARIES contains ZLIB_LIBRARY for 
example, because it depends on it. Should HDF5_LIBRARIES contain MPI_LIBRARIES?



Sorry I can't give more useful information. Maybe someone else can.



Thanks,



Steve.





--



Powered by www.kitware.comhttp://www.kitware.com



Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html



Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ



Follow this link to subscribe/unsubscribe:

http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

[cmake-developers] CMake 2.8.11-rc3 ready for testing!

2013-04-19 Thread Robert Maynard
The CMake 2.8.11 release candidate continues. This is the last RC
unless a critical, must-fix issue is found. You can find the source
and binaries here:
http://www.cmake.org/files/v2.8/?C=M;O=D

Some of the notable changes in this release are:
- Introduced Target Usage Requirements
  - Targets can specify usage requirements for their consumers such as
include directories
and preprocessor definitions; previously only link dependencies
were supported
  - target_link_libraries(myexe yourlib) can now build myexe sources
with requirements specified
by yourlib
  - Added target_include_directories and target_compile_definitions
commands with
PUBLIC/PRIVATE/INTERFACE options
  - See design and development discussion at
http://community.kde.org/Frameworks/Epics/CMake_target_usage_requirements

- Introduced a Generator Toolset selection for VS = 10 and Xcode = 3
  - Tell the IDEs which compiler toolchain to use
  - ex. Use VS 9 tools under VS 10: -G “Visual Studio 10” -T “v90”
- Introduced ExternalData Module
- Keep source trees lightweight by storing data separately
- Reference data unambiguously from source tree by content hash
- Fetch on-demand during build from local or remote resources
- CMake: Sublime Text Generator added that supports both Make and Ninja
- CMake: Added support for Texas Instruments C6 and up compilers
- CMake: Improve OpenBSD support
- CMake: Support for Windows CE with VS 8 and 9 generators
- CPack: Added Support for 64bit NSIS
- CPack: Added WiX Package Generator
- ExternalProject: Will run git fetch less often
- FindBoost: Major overhaul of searching and result caching
- FindCUDA: Now has support for separable compilation
- FindQt4: Overall improvements to finding Qt and importing targets
- FindSquish: Added support for squish 4
- GetPrerequisites: Port to MinGW with objdump

The bug tracker change log page for this version is at:
http://public.kitware.com/Bug/changelog_page.php?version_id=103

Following is the complete list of changes in this rc since the
previous rc. Please try this
version of CMake on your projects and report any issues to the list or
the bug tracker. This
release candidate will become the final release for 2.8.11 unless a
serious issue is reported.

Changes in CMake 2.8.11-rc3 (since 2.8.11-rc2)
--
Brad King (1):
  get_filename_component: Document path components more clearly (#14091)

Rolf Eike Beer (1):
  try_compile: add missing fclose() to recently added error case

Stephen Kelly (1):
  Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property.
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers