[CMake] General modernization facility

2007-12-18 Thread Brandon Van Every
On Dec 18, 2007 9:36 AM, James Bigler [EMAIL PROTECTED] wrote:

 I also agree that trying to maintain backwards compatibility to the
 detriment of the future can become a hinderance.  I just had a
 collegue who was extreemly frustrated for several hours with why his
 build didn't work, only to discover that he should have been using
 ADD_SUBDIRECTORIES instead of SUBDIRS.  There was no warning from
 CMake stating that he shouldn't be using it (I would argue that CMake
 should warn about the use of SUBDIRS).

General warning facilities, and a standard way of turning on future
looking options, so that people do not have to be stuck in the past if
they don't want to be, would be good.   CMake CVS has the
set_properties(GLOBAL PROPERTIES var1 value1 var2 value2 ...)
mechanism.  So if we didn't bother with the bool(var [value])
interface I proposed, we could selectively apply Alex's patch using
set_properties(GLOBAL PROPERTIES ORDINARY_Y_N_STRINGS TRUE).  Or maybe
someone can think of a better name for it.

Collections of options such as this could be put in a standard module
called Modern.  include(Modern) would turn on improvements that are
clearly desirable but break backwards compatibility.  Flagging SUBDIRS
as an error would be the kind of thing you'd stick into Modern.  If a
user does include(Modern), they're saying they want whatever is
currently considered the best practice, even if that breaks something.
 It should be clearly documented as having that purpose.

Heh, I wonder if in some instances the opposite would be needed,
include(Ancient) !  :-)  Something that either suppresses appeals to
modernity, or warns vehemently against them.


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] General modernization facility

2007-12-18 Thread James Bigler



Brandon Van Every wrote:

On Dec 18, 2007 9:36 AM, James Bigler [EMAIL PROTECTED] wrote:

I also agree that trying to maintain backwards compatibility to the
detriment of the future can become a hinderance.  I just had a
collegue who was extreemly frustrated for several hours with why his
build didn't work, only to discover that he should have been using
ADD_SUBDIRECTORIES instead of SUBDIRS.  There was no warning from
CMake stating that he shouldn't be using it (I would argue that CMake
should warn about the use of SUBDIRS).


General warning facilities, and a standard way of turning on future
looking options, so that people do not have to be stuck in the past if
they don't want to be, would be good.   CMake CVS has the
set_properties(GLOBAL PROPERTIES var1 value1 var2 value2 ...)
mechanism.  So if we didn't bother with the bool(var [value])
interface I proposed, we could selectively apply Alex's patch using
set_properties(GLOBAL PROPERTIES ORDINARY_Y_N_STRINGS TRUE).  Or maybe
someone can think of a better name for it.

Collections of options such as this could be put in a standard module
called Modern.  include(Modern) would turn on improvements that are
clearly desirable but break backwards compatibility.  Flagging SUBDIRS
as an error would be the kind of thing you'd stick into Modern.  If a
user does include(Modern), they're saying they want whatever is
currently considered the best practice, even if that breaks something.
 It should be clearly documented as having that purpose.

Heh, I wonder if in some instances the opposite would be needed,
include(Ancient) !  :-)  Something that either suppresses appeals to
modernity, or warns vehemently against them.


Perhaps this could be enforced by CMAKE_BACKWARDS_COMPATIBILITY variable.  If you supply a sufficiently modern version of cmake, then deprecated things will turn on 
warnings/errors.  If you set the version lower, then features that were not deprecated at that version wouldn't issue warnings.


James

___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] General modernization facility

2007-12-18 Thread Brandon Van Every
On Dec 18, 2007 1:06 PM, James Bigler [EMAIL PROTECTED] wrote:
 Brandon Van Every wrote:
 
  include(Modern) would turn on improvements that are
  clearly desirable but break backwards compatibility.
 
  Heh, I wonder if in some instances the opposite would be needed,
  include(Ancient) !  :-)  Something that either suppresses appeals to
  modernity, or warns vehemently against them.

 Perhaps this could be enforced by CMAKE_BACKWARDS_COMPATIBILITY variable.
 If you supply a sufficiently modern version of cmake, then deprecated things 
 will turn on
 warnings/errors.  If you set the version lower, then features that were not 
 deprecated at
 that version wouldn't issue warnings.

How about include(ForwardsCompatibility).  That would make the intent
really clear.


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake