diff options
author | Gerald Combs <gerald@wireshark.org> | 2015-04-07 14:05:52 -0700 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2015-04-14 19:09:30 +0000 |
commit | 1404605513cedd34070154aa355663b8e4734bc4 (patch) | |
tree | a01b87e146eb6a948c7177f197b43fba5add1e2c /CMakeLists.txt | |
parent | 311758aff7b21d877addac447d9216a22bc1af5e (diff) | |
download | wireshark-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.txt | 39 |
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() |