summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2015-04-07 14:05:52 -0700
committerGerald Combs <gerald@wireshark.org>2015-04-14 19:09:30 +0000
commit1404605513cedd34070154aa355663b8e4734bc4 (patch)
treea01b87e146eb6a948c7177f197b43fba5add1e2c /CMakeLists.txt
parent311758aff7b21d877addac447d9216a22bc1af5e (diff)
downloadwireshark-1404605513cedd34070154aa355663b8e4734bc4.tar.gz
Start moving win-setup to PowerShell.
Add win-setup.ps1, which duplicates the following tasks performed by config.nmake + Makefile.nmake + win-setup.sh: - Create the windows library directory. - Download files. - Download and unpack zip files. - Check and set current-tag.txt Don't verify applications or libraries. CMakeLists.txt does that. Update the Developer's Guide. Have POWERSHELL_COMMAND use dot sourcing instead of "-File", which appears to be a synonym for "-IgnoreTheExitStatusReturnedByThisScript". This removes our dependencies on unzip and wget and reduces our dependency on bash. Change-Id: Ia9def24acbe183d81b9d477fa42e655e4a3a6614 Reviewed-on: https://code.wireshark.org/review/7990 Reviewed-by: Graham Bloice <graham.bloice@trihedral.com> Petri-Dish: Graham Bloice <graham.bloice@trihedral.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt39
1 files changed, 30 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd3fe77cf6..780d1d7ca7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,11 +32,16 @@ cmake_policy(SET CMP0011 OLD)
# Policy since 2.8.1
cmake_policy(SET CMP0015 NEW)
+#Where to find local cmake scripts
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+
# If our target platform is enforced by our generator, set
# WIRESHARK_TARGET_PLATFORM accordingly. Otherwise use
# %WIRESHARK_TARGET_PLATFORM%.
if(WIN32)
+ find_package(PowerShell REQUIRED)
+
if("${CMAKE_GENERATOR}" MATCHES "Win64")
set(WIRESHARK_TARGET_PLATFORM win64)
set(PROCESSOR_ARCHITECTURE amd64)
@@ -49,6 +54,7 @@ if(WIN32)
set(WIRESHARK_TARGET_PLATFORM $ENV{WIRESHARK_TARGET_PLATFORM})
endif()
+ # Sanity check
if(DEFINED ENV{PLATFORM})
string(TOLOWER $ENV{PLATFORM} _vs_platform)
else()
@@ -62,10 +68,30 @@ if(WIN32)
message(FATAL_ERROR "The PLATFORM environment variable (${_vs_platform})"
" doesn't match the generator platform (${WIRESHARK_TARGET_PLATFORM})")
endif()
-endif(WIN32)
-#Where to find local cmake scripts
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+ # Download third-party libraries
+ file (TO_NATIVE_PATH ${CMAKE_SOURCE_DIR}/tools/win-setup.ps1 _win_setup)
+ file (TO_NATIVE_PATH "$ENV{WIRESHARK_BASE_DIR}/wireshark-${WIRESHARK_TARGET_PLATFORM}-libs" _ws_lib_dir)
+ if(MSVC12)
+ set(_vsversion_args "-VSVersion 12")
+ elseif(MSVC11)
+ set(_vsversion_args "-VSVersion 11")
+ elseif(MSVC10)
+ set(_vsversion_args "-VSVersion 10")
+ endif()
+ # Is it possible to have a one-time, non-cached option in CMake? If
+ # so, we could add a "-DFORCE_WIN_SETUP" which passes -Force to
+ # win-setup.ps1.
+ execute_process(
+ COMMAND ${POWERSHELL_COMMAND} "${_win_setup}" -Destination "${_ws_lib_dir}" -Platform ${WIRESHARK_TARGET_PLATFORM} ${_vsversion_args}
+ RESULT_VARIABLE _win_setup_failed
+ )
+ if (${_win_setup_failed})
+ message(FATAL_ERROR "Windows setup (win-setup.ps1) failed.")
+ endif()
+
+ # XXX Add a dependency on ${_ws_lib_dir}/current_tag.txt?
+endif(WIN32)
include(UseCustomIncludes)
ADD_CUSTOM_CMAKE_INCLUDE()
@@ -542,10 +568,7 @@ set(PythonInterp_FIND_VERSION 2)
set(Python_ADDITIONAL_VERSIONS 3)
set(YACC_REQUIRED TRUE)
-if (WIN32)
- set(PACKAGELIST ${PACKAGELIST} PowerShell)
- set(PowerShell_REQUIRED TRUE)
-else()
+if (NOT WIN32)
set(M_REQUIRED TRUE)
endif()
@@ -711,8 +734,6 @@ foreach(PACKAGE ${PACKAGELIST})
set(PACKAGE_VAR "HTML_VIEWER")
elseif(${PACKAGE} STREQUAL "Perl")
set(PACKAGE_VAR "PERL")
- elseif(${PACKAGE} STREQUAL "PowerShell")
- set(PACKAGE_VAR "POWERSHELL")
else()
set(PACKAGE_VAR ${PACKAGE})
endif()