CMake: add our own FindCygwin module

The one from official CMake (3.3.2) does not look for the default 64bits installation path. Let's add it.
Also add a WIRESHARK_CYGWIN_INSTALL_PATH environment variable allowing to force it.
For reference, registry based detection fails to detect a 64bits installation because it gets redirected to the Wow6432 node.

Change-Id: If3172494e3ab232e094389b493e6b67023662ae5
Reviewed-on: https://code.wireshark.org/review/11769
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
This commit is contained in:
Pascal Quantin 2015-11-12 17:50:18 +01:00
parent da71ccbf77
commit 654d4abf71
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,65 @@
#.rst:
# FindCygwin
# ----------
#
# this module looks for Cygwin
# This code was copied from
# http://cmake.org/gitweb?p=cmake.git;a=blob_plain;f=Modules/FindCygwin.cmake;hb=HEAD
# and modified so as to check C:\Cygwin64 and the WIRESHARK_CYGWIN_INSTALL_PATH
# environment variable
#=============================================================================
#CMake - Cross Platform Makefile Generator
#Copyright 2000-2015 Kitware, Inc.
#Copyright 2000-2011 Insight Software Consortium
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without
#modification, are permitted provided that the following conditions
#are met:
#
#* Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
#* Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
#* Neither the names of Kitware, Inc., the Insight Software Consortium,
# nor the names of their contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
if (WIN32)
find_path(CYGWIN_INSTALL_PATH
cygwin.bat
PATH ENV WIRESHARK_CYGWIN_INSTALL_PATH
"C:/Cygwin"
"C:/Cygwin64"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygwin\\setup;rootdir]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/;native]"
)
if(${CYGWIN_INSTALL_PATH} STREQUAL "CYGWIN_INSTALL_PATH-NOTFOUND")
message(FATAL_ERROR "Cygwin installation path was not detected. You can set it with WIRESHARK_CYGWIN_INSTALL_PATH environment variable.")
else()
mark_as_advanced(
CYGWIN_INSTALL_PATH
)
endif()
endif ()

View File

@ -387,6 +387,13 @@ Set the following environment variables, using paths and values suitable for you
> set WIRESHARK_VERSION_EXTRA=-YourExtraVersionInfo
----
If your Cygwin installation path is not automatically detected by CMake, you can explicitly specify it with the following
environment variable:
----
> set WIRESHARK_CYGWIN_INSTALL_PATH=c:\cygwin or whatever other path that is applicable to your setup
----
If you are using a version of Visual Studio earlier than VS2012 then you must set an additional env var,
e.g. for VS2010 set the following:
----