Re: [cmake-developers] Where to document the graphviz options ?

2013-07-25 Thread Eric Noulard
2013/7/24 Alexander Neundorf neund...@kde.org:
 Hi,

 using cmake --graphviz=filename .
 you can generate graphs showing the dependencies between the targets.
 If present, cmake will read a CMakeGraphVizOptions.cmake file, and use options
 from it, e.g. GRAPHVIZ_GRAPH_TYPE and GRAPHVIZ_EXTERNAL_LIBS.
 AFAIK this is not documented anywhere, and I would like to change this.

 But where should I put this information ?

I would suggest to document it inside CMakeGraphVizOptions.cmake
using basic markup used for documenting CPack generators.
Then simply make cmake parse the file the way cpack does and you'll
get the variables
(or macro/functions) documented in --help-variable-*

 Simply list the variables in the variables section, and mention that they need
 to be set in a CMakeGraphVizOptions.cmake file ?
 Better ideas ?

Nope.

-- 
Erk
L'élection n'est pas la démocratie -- http://www.le-message.org
--

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 0014311]: CMake cannot install imported targets

2013-07-25 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://public.kitware.com/Bug/view.php?id=14311 
== 
Reported By:Nikita Krupenko
Assigned To:
== 
Project:CMake
Issue ID:   14311
Category:   CMake
Reproducibility:always
Severity:   major
Priority:   normal
Status: new
== 
Date Submitted: 2013-07-25 05:19 EDT
Last Modified:  2013-07-25 05:19 EDT
== 
Summary:CMake cannot install imported targets
Description: 
I use ExternalProject for building non-Cmake projects and add imported targets
for that projects. For example:

ExternalProject_add(mylib_proj ...)
add_library(mylib SHARED IMPORTED)
set_target_properties(mylib PROPERTIES IMPORTED_LOCATION ...)
add_dependencies(mylib mylib_proj)

I can link with that library, but CMake cannot install them. This code

install(TARGETS mylib DESTINATION ...)

produces following error:

CMake Error at CMakeLists.txt:48 (install):
  install TARGETS given target mylib which does not exist in this
  directory.

Because of broken install packaging using CPack also not working.
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2013-07-25 05:19 Nikita KrupenkoNew Issue
==

--

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] CPack BAR package generator

2013-07-25 Thread Stephen Kelly

Hi there,

I've pushed a cpack-bar-package topic to my clone

 https://gitorious.org/~steveire/cmake/steveires-cmake

It is the start of a CPack generator for BlackBerry BAR packages, required 
for deployment to those devices. I haven't worked much with CPack before, so 
I'd appreciate some feedback even at this early point. 

Some issues that have come up already are in the commit message.

Thanks,

Steve.


--

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] Allowed chars in test names

2013-07-25 Thread Brad King
On 07/24/2013 05:38 PM, Rolf Eike Beer wrote:
 So for the beginning I would go and just simply reject every test name that 
 has spaces or quotes, because that has never worked.

That sounds good.

Thanks,
-Brad
--

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 0014312]: Parallel builds using make break when two or more targets that share a dependency (or are dependent) are called explicitly

2013-07-25 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://www.cmake.org/Bug/view.php?id=14312 
== 
Reported By:Wojciech Knapik
Assigned To:
== 
Project:CMake
Issue ID:   14312
Category:   CMake
Reproducibility:always
Severity:   major
Priority:   high
Status: new
== 
Date Submitted: 2013-07-25 15:14 CEST
Last Modified:  2013-07-25 15:14 CEST
== 
Summary:Parallel builds using make break when two or more
targets that share a dependency (or are dependent) are called explicitly
Description: 
In the example below, the top level targets for main and empty have recipes
that call make. When make is called with -j, the two instances of make are
called in parallel and, knowing nothing about each other, race to finish the
same task.

In the real world, this breaks builds in very common use cases. E.g. when you
have 3 types of tests - ut, mt and it - it is reasonable to call `make -j24 ut
mt it'. If those targets happen to share dependencies, the build will break.

Creating top level targets that cover all such combinations is not an acceptable
solution.

Steps to Reproduce: 
$ cat CMakeLists.txt 
cmake_minimum_required(VERSION 2.8)
project(foo)
add_library(empty STATIC empty.cpp)
add_custom_command(TARGET empty POST_BUILD COMMAND echo whoops)
add_executable(main main.cpp)
target_link_libraries(main empty)
$ cd build
$ cmake ..
$ make -j empty main|grep whoops
whoops
whoops
$
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2013-07-25 15:14 Wojciech KnapikNew Issue
==

--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Stephen Kelly

Hi,

In response to 

 https://bugreports.qt-project.org/browse/QTBUG-32599

I first considered adding something like

 if(NOT QT_INCLUDE_DIRS_NO_SYSTEM)
   set_property(TARGET Qt5::Core 
 SYSTEM_INTERFACE_INCLUDE_DIRECTORIES
 ${Qt5Core_INCLUDE_DIRS}
   )
 endif()

for each imported target, which would cause CMake to treat the includes for 
it as system includes.

Then I had the idea that I didn't like the API of

 set(QT_INCLUDE_DIRS_NO_SYSTEM 1)
 find_package(Qt5Core)

and I prefered

 find_package(Qt5Core)
 add_library(foo ...)
 target_link_libraries(foo SYSTEM Qt5::Core)

which has a similar effect as the SYSTEM keyword in 
target_include_directories.

I implemented that without a test so far in tll-system-includes-signature in 
my clone. However, the motivation for that is that I generally want to treat 
all 'external' headers as system includes, and Qt is just a common external 
dependency. 

Should we treat the INTERFACE_INCLUDE_DIRECTORIES of all IMPORTED targets as 
SYSTEM includes automatically?

Thanks,

Steve.


--

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] Shared library names with numerical suffix

2013-07-25 Thread Stephen Kelly

Hi, 

Commit 342fc0401005 (Recognize shared library files with a numerical suffix, 
2013-04-11) resulted from 

 
http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/6613/focus=6616

In a more-recent review, I thought that if there is an extension in the exts 
list which already has a numerical extension, then the extra check for a 
numerical extension shouldn't be added for that entry. 

  else if(type == LinkShared)
{
libext += (\\.[0-9]+)?;
}

The code is quite complex with regexes. I wonder if something like that can 
be fixed, or should it just be left as-is?

Thanks,

Steve.


--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Brad King
On 07/25/2013 09:16 AM, Stephen Kelly wrote:
  target_link_libraries(foo SYSTEM Qt5::Core)

That looks okay to me so long as SYSTEM must always be the first keyword.
We could also consider adding it only to the modern (newest) keyword
signature to encourage conversion to it.

 Should we treat the INTERFACE_INCLUDE_DIRECTORIES of all IMPORTED targets as 
 SYSTEM includes automatically?

I don't think so because one could be importing targets from a dependency
that was just built as part of a superbuild and may want to see the
warnings.

-Brad
--

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] Shared library names with numerical suffix

2013-07-25 Thread Brad King
On 07/25/2013 09:31 AM, Stephen Kelly wrote:
 In a more-recent review, I thought that if there is an extension in the exts 
 list which already has a numerical extension, then the extra check for a 
 numerical extension shouldn't be added for that entry. 
 
   else if(type == LinkShared)
 {
 libext += (\\.[0-9]+)?;
 }

This hunk occurs once at the end after all extensions have been considered.
The choice can't be made on a per-entry basis in the current design.  I
think it is fine as-is.

-Brad
--

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 0014313]: Automoc outputs in CMAKE_CURRENT_BINARY_DIR, not customizable

2013-07-25 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://www.cmake.org/Bug/view.php?id=14313 
== 
Reported By:Marc Plano-Lesay
Assigned To:
== 
Project:CMake
Issue ID:   14313
Category:   CMake
Reproducibility:N/A
Severity:   feature
Priority:   normal
Status: new
== 
Date Submitted: 2013-07-25 10:13 EDT
Last Modified:  2013-07-25 10:13 EDT
== 
Summary:Automoc outputs in CMAKE_CURRENT_BINARY_DIR, not
customizable
Description: 
Using Automoc with CMake 2.8.11/Qt5, there's no way to choose where the moc
files are generated. AM_CMAKE_CURRENT_BINARY_DIR is defined in AutomocInfo.cmake
and can't be defined anywhere else.
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2013-07-25 10:13 Marc Plano-LesayNew Issue
==

--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Stephen Kelly
Brad King wrote:

 On 07/25/2013 09:16 AM, Stephen Kelly wrote:
  target_link_libraries(foo SYSTEM Qt5::Core)
 
 That looks okay to me so long as SYSTEM must always be the first keyword.

Yes, that's how I've implemented it currently.

 We could also consider adding it only to the modern (newest) keyword
 signature to encourage conversion to it.

I considered that, but I think the plain signature without 
INTERFACE_LINK_LIBRARIES is going to remain most common in executable lhs 
cases. I didn't see any need to exclude it from only the signature with 
INTERFACE_LINK_LIBRARIES.

 
 Should we treat the INTERFACE_INCLUDE_DIRECTORIES of all IMPORTED targets
 as SYSTEM includes automatically?
 
 I don't think so because one could be importing targets from a dependency
 that was just built as part of a superbuild and may want to see the
 warnings.

I considered that, but if you're building it as part of a superbuild, you'll 
still get the warning when building the dependency itself. 

You control the flags used to build the dependency, so you can add the flag 
to trigger the warning when building the dependency. If the dependency is 
something you bundle, like zlib as in the case of Qt and cmake, then you 
don't want to maintain patches to clean the headers, but you want them 
upstream. At the same time, you don't want to trigger the warnings which may 
be new with your compiler (usused typedefs is a common one nowadays) when 
using the bundled dependency. When building it, you disable that warning, 
and when using it, you want its headers treated as system headers, but you 
still want the unused typedef warning for your own code.

So, I think it still makes sense to treat all interface include directories 
of IMPORTED targets as SYSTEM includes.

Thanks,

Steve.


--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Matthew Woehlke

On 2013-07-25 11:25, Stephen Kelly wrote:

Brad King wrote:

On 07/25/2013 09:16 AM, Stephen Kelly wrote:

Should we treat the INTERFACE_INCLUDE_DIRECTORIES of all IMPORTED targets
as SYSTEM includes automatically?


I don't think so because one could be importing targets from a dependency
that was just built as part of a superbuild and may want to see the
warnings.


I considered that, but if you're building it as part of a superbuild, you'll
still get the warning when building the dependency itself.


Not necessarily; library A may provide a utility header that it doesn't 
actually use internally, and library B may use it and produce a warning. 
(Besides there is more chance of noticing a warning the more times it 
trips. For that matter, wouldn't this defeat the purpose in the original 
post of being able to include Qt as non-SYSTEM?)


--
Matthew

--

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 0014314]: GCC warns about strict aliasing in cm_sha2.c

2013-07-25 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://www.cmake.org/Bug/view.php?id=14314 
== 
Reported By:Petr Machata
Assigned To:
== 
Project:CMake
Issue ID:   14314
Category:   CMake
Reproducibility:always
Severity:   minor
Priority:   normal
Status: new
== 
Date Submitted: 2013-07-25 12:17 EDT
Last Modified:  2013-07-25 12:17 EDT
== 
Summary:GCC warns about strict aliasing in cm_sha2.c
Description: 
When compiling cm_sha2.c, GCC gives the following warning:

/builddir/build/BUILD/cmake-2.8.11.2/Source/cm_sha2.c: In function
'cmSHA1_Final':
/builddir/build/BUILD/cmake-2.8.11.2/Source/cm_sha2.c:743:2: warning:
dereferencing type-punned pointer will break strict-aliasing rules
[-Wstrict-aliasing]
  *(sha_word64*)context-s1.buffer[56] = context-s1.bitcount;
  ^

There are four cases total.

Steps to Reproduce: 
1) Compile with recent GCC (4.8?)
2) Inspect compile log

Additional Information: 
I propose fixing this by copying the necessary bytes through union.  This should
lead to the same binary, but will make it clear to GCC that we are only using
the buffer as a bunch of characters.  The test suite passes after applying the
patch, that I attach.
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2013-07-25 12:17 Petr Machata   New Issue
2013-07-25 12:17 Petr Machata   File Added: cmake-2.8.11-strict_aliasing.patch  
 
==

--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Stephen Kelly
Matthew Woehlke wrote:

 On 2013-07-25 11:25, Stephen Kelly wrote:
 Brad King wrote:
 On 07/25/2013 09:16 AM, Stephen Kelly wrote:
 Should we treat the INTERFACE_INCLUDE_DIRECTORIES of all IMPORTED
 targets as SYSTEM includes automatically?

 I don't think so because one could be importing targets from a
 dependency that was just built as part of a superbuild and may want to
 see the warnings.

 I considered that, but if you're building it as part of a superbuild,
 you'll still get the warning when building the dependency itself.
 
 Not necessarily; library A may provide a utility header that it doesn't
 actually use internally, and library B may use it and produce a warning.

Edge case. 

Even then, library A should have a unit test which attempts to compile all 
of its headers with all warnings enabled. In Qt every module has a 
'headersclean' unit test which does exactly that.

 
https://qt.gitorious.org/qt/qtbase/blobs/dev/mkspecs/features/qt_headersclean.prf

 (Besides there is more chance of noticing a warning the more times it
 trips. For that matter, wouldn't this defeat the purpose in the original
 post of being able to include Qt as non-SYSTEM?)
 
The purpose in the bug report is not to include Qt as non-SYSTEM, but the 
opposite. I don't see any reason for downstreams to include Qt headers as 
non-SYSTEM headers.

Thanks,

Steve.


--

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 0014315]: Icon name in CMake.desktop should not contain file extension

2013-07-25 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://www.cmake.org/Bug/view.php?id=14315 
== 
Reported By:Petr Machata
Assigned To:
== 
Project:CMake
Issue ID:   14315
Category:   QtDialog
Reproducibility:always
Severity:   minor
Priority:   normal
Status: new
== 
Date Submitted: 2013-07-25 12:50 EDT
Last Modified:  2013-07-25 12:50 EDT
== 
Summary:Icon name in CMake.desktop should not contain file
extension
Description: 
This is described in the following spec:

http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html

While it's not mentioned explicitly, it's clear from the way LookupFallbackIcon
is written that icon name is name of the icon, not a path or name of a file with
that icon.

Steps to Reproduce: 
1) Read through linked standard
2) Read Source/QtDialog/CMake.desktop
3) Observe that the latter doesn't conform to the spec

Additional Information: 
At this time I believe this works anyway, but if themes should provide CMake
icons in svg, they would have to name them CMakeSetup32.png.svg, or some such,
which is awkward.
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2013-07-25 12:50 Petr Machata   New Issue
2013-07-25 12:50 Petr Machata   File Added: cmake-desktop_icon.patch
   
==

--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Brad King
On 07/25/2013 12:22 PM, Stephen Kelly wrote:
 library A should have a unit test which attempts to compile all 
 of its headers with all warnings enabled. In Qt every module has a 
 'headersclean' unit test which does exactly that.

While this is a good idea we're not going to assume every project has
such discipline.  Also some consumers may include headers with a
different preprocessing context that exposes the warning.

 The purpose in the bug report is not to include Qt as non-SYSTEM, but the 
 opposite. I don't see any reason for downstreams to include Qt headers as 
 non-SYSTEM headers.

Then why not make INTERFACE_SYSTEM_INCLUDE_DIRECTORIES the default in
the Qt imported targets and have a switch to turn them off?  The code

 set(QT_INCLUDE_DIRS_NO_SYSTEM 1)
 find_package(Qt5Core)

is not so bad in the edge case that needs it.

Either way, the tll() SYSTEM option could still be useful.

-Brad
--

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] SelectLibraryConfigurations cached/advanced variables

2013-07-25 Thread Daniele E. Domenichelli
Hello,

Now that SelectLibraryConfigurations is good enough for me, I updated
FindGTK2.cmake to use it. I pushed my changes in a FindGTK2Debug topic,
does anyone want to review them before I merge the changes to next?

Thanks,

Cheers,
 Daniele
--

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] SelectLibraryConfigurations cached/advanced variables

2013-07-25 Thread Brad King
On 07/25/2013 01:18 PM, Daniele E. Domenichelli wrote:
 Now that SelectLibraryConfigurations is good enough for me, I updated
 FindGTK2.cmake to use it. I pushed my changes in a FindGTK2Debug topic,
 does anyone want to review them before I merge the changes to next?

I just glanced through and the changes all look good to me except one
minor detail.  In this hunk:

+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)

it is not safe to include a standard module inside a function due to
variable scoping.  Please revise the commit to include the file ahead
of time.  Then go ahead and merge.

Thanks,
-Brad
--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Matthew Woehlke

On 2013-07-25 13:25, Stephen Kelly wrote:

Brad King wrote:


On 07/25/2013 12:22 PM, Stephen Kelly wrote:

library A should have a unit test which attempts to compile all
of its headers with all warnings enabled. In Qt every module has a
'headersclean' unit test which does exactly that.


While this is a good idea we're not going to assume every project has
such discipline.  Also some consumers may include headers with a
different preprocessing context that exposes the warning.


Right. Even if all headers are used by the upstream itself, this still
applies. However, I still think IMPORTED=SYSTEM by *default* is a good idea,
and let the edge case switch it back. I'm not seeing support for it though,
so I guess I'll drop it.


Somewhat echoing Brad's reply here, but it's not that I'm opposed to the 
idea, merely concerned that it is possible to get non-system includes 
when that is desired.


Perhaps that is a misreading on my part, but I was getting the 
impression this change would make it so that imported targets can only 
ever be SYSTEM.



Then why not make INTERFACE_SYSTEM_INCLUDE_DIRECTORIES the default in
the Qt imported targets and have a switch to turn them off?  The code

  set(QT_INCLUDE_DIRS_NO_SYSTEM 1)
  find_package(Qt5Core)

is not so bad in the edge case that needs it.


I don't like it though :). I'd prefer not to have any variables that change
the behavior of a find_package call, so that only one find_package is ever
needed, not multiple in different directories for scope.


FWIW, I agree; variables controlling find_package (except search paths) 
are almost always an inferior solution :-).


That said... what about having a SYSTEM (and/or NO_SYSTEM) flag for 
find_package? This could, for config-based packages with imported 
targets, control the default behavior for imported include directories.



Either way, the tll() SYSTEM option could still be useful.


I'll add that tomorrow.


Again FWIW, a nice advantage of this is the ability to specify SYSTEM 
includes per target. (I'm not sure why you'd want to build one target 
with imported includes as SYSTEM and another not, but you could...)


--
Matthew

--

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 -E tar not working correctly with xz-compressed tarballs on MSYS

2013-07-25 Thread Brad King
On 07/24/2013 03:27 PM, Alan W. Irwin wrote:
 The first priority is to verify on Microsoft Windows that this is
 actually an issue using the the simple test I outlined in my previous
 post.

At a MSYS prompt under MS Windows this works:

 $ cat a.tar.xz | unxz | tar x

but this hangs:

 $ cmake -E tar xvf a.tar.xz

One can see in the process tree that there is a child process of
cmake called unxz that was started with no command line arguments.
One can attach a debugger to see CMake blocked inside libarchive code.

This confirms that the hang occurs on MS Windows just as in Wine.
I suggest getting upstream libarchive and building its sample
tools but without lzma support built-in.  Then try using that
binary to extract the .tar.xz file.

-Brad
--

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 0014316]: CMake can't find Ninja w/ Double Quotes

2013-07-25 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://public.kitware.com/Bug/view.php?id=14316 
== 
Reported By:Brennon Brimhall
Assigned To:
== 
Project:CMake
Issue ID:   14316
Category:   (No Category)
Reproducibility:have not tried
Severity:   minor
Priority:   normal
Status: new
== 
Date Submitted: 2013-07-25 17:27 EDT
Last Modified:  2013-07-25 17:27 EDT
== 
Summary:CMake can't find Ninja w/ Double Quotes
Description: 
When PATH is set using double quotes, and builder is set to Ninja, CMake is
unable to find ninja executable.

Steps to Reproduce: 
* Download Ninja
* Set PATH with Double Quotes
* Open CMake
* Select Ninja as builder
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2013-07-25 17:27 Brennon BrimhallNew Issue
==

--

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] target_link_libraries, IMPORTED targets and SYSTEM includes

2013-07-25 Thread Stephen Kelly
Matthew Woehlke wrote:

 On 2013-07-25 13:25, Stephen Kelly wrote:
 Brad King wrote:

 On 07/25/2013 12:22 PM, Stephen Kelly wrote:
 library A should have a unit test which attempts to compile all
 of its headers with all warnings enabled. In Qt every module has a
 'headersclean' unit test which does exactly that.

 While this is a good idea we're not going to assume every project has
 such discipline.  Also some consumers may include headers with a
 different preprocessing context that exposes the warning.

 Right. Even if all headers are used by the upstream itself, this still
 applies. However, I still think IMPORTED=SYSTEM by *default* is a good
 idea, and let the edge case switch it back. I'm not seeing support for it
 though, so I guess I'll drop it.
 
 Somewhat echoing Brad's reply here, but it's not that I'm opposed to the
 idea, merely concerned that it is possible to get non-system includes
 when that is desired.
 
 Perhaps that is a misreading on my part, but I was getting the
 impression this change would make it so that imported targets can only
 ever be SYSTEM.

I didn't really make that clear as the discussion developed, but yes, I 
think it makes sense to allow treating the include directories as non-system 
somehow, even if not by default.

 
 Then why not make INTERFACE_SYSTEM_INCLUDE_DIRECTORIES the default in
 the Qt imported targets and have a switch to turn them off?  The code

   set(QT_INCLUDE_DIRS_NO_SYSTEM 1)
   find_package(Qt5Core)

 is not so bad in the edge case that needs it.

 I don't like it though :). I'd prefer not to have any variables that
 change the behavior of a find_package call, so that only one find_package
 is ever needed, not multiple in different directories for scope.
 
 FWIW, I agree; variables controlling find_package (except search paths)
 are almost always an inferior solution :-).
 
 That said... what about having a SYSTEM (and/or NO_SYSTEM) flag for
 find_package? This could, for config-based packages with imported
 targets, control the default behavior for imported include directories.

I don't think that solves the problem. You might have one target which you 
want to treat the directories as SYSTEM, and one which you don't. I think 
the API for this should have target scope: A target property like 

 set_property(TARGET foo PROPERTY IMPORTED_INTERFACE_DIRS_SYSTEM 1)

and 

 set(CMAKE_IMPORTED_INTERFACE_DIRS_SYSTEM 1)

to set the default, as usual.

or 

 set_property(TARGET foo PROPERTY IMPORTED_INTERFACE_DIRS system)
 set_property(TARGET foo PROPERTY IMPORTED_INTERFACE_DIRS non_system)

 set(CMAKE_IMPORTED_INTERFACE_DIRS system)

 Either way, the tll() SYSTEM option could still be useful.

 I'll add that tomorrow.
 
 Again FWIW, a nice advantage of this is the ability to specify SYSTEM
 includes per target. (I'm not sure why you'd want to build one target
 with imported includes as SYSTEM and another not, but you could...)

Yes. Even with the target property as above you could still do

 target_link_libraries(foo SYSTEM Bar::core)
 target_link_libraries(foo Bar::gui)

We could also add the opposite if you want. 

 target_link_libraries(foo NON_SYSTEM Bar::core)

However, as the above already is enough for all use-cases and what we're 
discussing is an edge-case already, we don't need too much API for it. We 
can always add it later if needed.

Thanks,

Steve.


--

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 -E tar not working correctly with xz-compressed tarballs on MSYS

2013-07-25 Thread Alan W. Irwin

On 2013-07-25 15:31-0400 Brad King wrote:


On 07/24/2013 03:27 PM, Alan W. Irwin wrote:

The first priority is to verify on Microsoft Windows that this is
actually an issue using the the simple test I outlined in my previous
post.


At a MSYS prompt under MS Windows this works:

$ cat a.tar.xz | unxz | tar x

but this hangs:

$ cmake -E tar xvf a.tar.xz

One can see in the process tree that there is a child process of
cmake called unxz that was started with no command line arguments.
One can attach a debugger to see CMake blocked inside libarchive code.

This confirms that the hang occurs on MS Windows just as in Wine.
I suggest getting upstream libarchive and building its sample
tools but without lzma support built-in.  Then try using that
binary to extract the .tar.xz file.


Thanks, Brad, for that Microsoft Windows confirmation, and I will
follow your advice for the rest to try and track down whether the
problem is for the libarchive upstream version or the libarchive
version within CMake.  With luck I should be able to come up with a
fix as well (since drop-through to command-line handling of *.tar.xz
should be completely straightforward) assuming the MSYS version of gdb
works similarly to the Linux version (which I am familiar with).

Alan
__
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__

Linux-powered Science
__
--

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