Crisis may have been at least temporarily averted.  Figured out how to
fake out FindFLTK.cmake.  Still not very pretty, but it at least is
documentable.

Will keep everyone posted.


On 6/23/11 2:41 AM, DRC wrote:
> To keep everyone in the loop on this, I did discover after sending the
> previous message that FLTK can be built with CMake, but this uncovered a
> variety of problems in our FLTK extensions patch.  I've since fixed
> those, but then I ran into another very weird problem in CMake's FLTK
> detection module (FindFLTK.cmake).  The code in there is hopelessly
> broken.  It tries to detect FLTKConfig.cmake to ascertain whether FLTK
> was built with CMake or not.  Well, FLTKConfig.cmake no longer exists in
> the FLTK source tree, so this detection fails.  Then, FindFLTK.cmake
> tries to find fluid under ${FLTK_INCLUDE_DIR}/fluid -- this only works
> if FLTK was built with autotools using an in-tree build.
> 
> In short, there is no way, given the current tools, that FLTK can be
> properly detected in the TigerVNC build unless:
> 
> (a) it was built with autotools using an in-tree build, and
> FLTK_INCLUDE_DIR and FLTK_LIBRARY are overridden to specify the location
> of the build directory and the library underneath it.
> 
> (b) the library is installed in a standard system location, such as
> /usr/include and /usr/lib.
> 
> There is no way, period, that FLTK can be properly detected on Windows
> using Visual C++.  There is no way, period, that FLTK can be properly
> detected on Unix if it is installed under a prefix other than the
> standard /usr, /usr/local, etc.
> 
> <sigh>
> 
> This seems really hopelessly complicated, and at the moment, I don't
> know how to tame it without bringing the FLTK code into our tree.  That
> seems like a marginally more sane approach than writing our own version
> of FindFLTK.cmake.
> 
> The only way I am willing to accept the requirement of developers
> building their own version of FLTK is if it can be built using basically
> the same recipes as TigerVNC-- that is, using CMake.  The process
> becomes very unwieldy and unsupportable if very specific procedures are
> required to build FLTK for each platform, and if those procedures differ
> from those used to build TigerVNC, and if not using those procedures
> causes FLTK detection to fail when building TigerVNC.
> 
> Note that the detection failure isn't always nice, either.  In certain
> cases on OS X, CMake will simply abort with TRACE/BPT TRAP and won't
> tell you why it's aborting, and there is nothing in the log to indicate
> that it is tripping up on detecting FLTK.
> 
> I'm a lot more knowledgeable about this stuff than we can expect the
> average person trying to use the TigerVNC code to be.  I really think
> that the only sane way forward is an in-tree version, for now.  We can
> revisit the issue later.  I see indications that there is a planned
> overhaul of FindFLTK.cmake at some point in the future.
> 
> 
> On 6/22/11 2:46 AM, DRC wrote:
>> After messing with trying to build FLTK on Windows, I really want to
>> include a "golden" version of the FLTK source in our tree and have the
>> library optionally built using the CMake build system (using a
>> USE_INCLUDED_FLTK option.)  I'm more than happy to write this code and
>> do the integration.
>>
>> If people don't want to use the in-tree version, they don't have to, but
>> trying to document a reproducible build procedure is pretty much
>> impossible for Windows right now, because building FLTK requires the
>> Visual Studio IDE.  This precludes being able to build a 64-bit version
>> unless you are using the "paid" version of Visual C++, and it's not
>> straightforward even then.  It's also really a pain to build FLTK on
>> Unix.  FLTK isn't using a modern version of autotools, so out-of-tree
>> builds and other stuff doesn't work.
>>
>> I am generally OK with introducing external dependencies that are
>> readily available in binary library form on all supported platforms (as
>> is the case for libjpeg-turbo), but FLTK isn't even generally available
>> on Linux.  I am not in favor of hard external dependencies that have to
>> be built from source, particularly when the build procedure for those
>> dependencies is not straightforward and we're requiring custom patches
>> at the moment.
>>
>> With GnuTLS, having a somewhat esoteric build procedure is OK, because
>> that is not a critical component for TigerVNC.  FLTK is.  It needs to be
>> easier to build.
>>
>> I've been including FLTK in the VirtualGL source for years, with no
>> issues.  It's not security-critical code, so we don't really need to
>> focus on "maintaining" it in our tree.  We would just need to upgrade it
>> if something didn't work.
>>
>> DRC

------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Data protection magic?
Nope - It's vRanger. Get your free trial download today.
http://p.sf.net/sfu/quest-sfdev2dev
_______________________________________________
Tigervnc-devel mailing list
Tigervnc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-devel

Reply via email to