CMake package: use Windows SSL implementation (#29943)
Add option to allow using OpenSSL (by default this uses the SSL implementation that comes with Windows, since that is more likely to have needed certificates).
This commit is contained in:
parent
0f80a5a9d5
commit
840858c215
@ -10,6 +10,8 @@
|
|||||||
import spack.build_environment
|
import spack.build_environment
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
is_windows = sys.platform == 'win32'
|
||||||
|
|
||||||
|
|
||||||
class Cmake(Package):
|
class Cmake(Package):
|
||||||
"""A cross-platform, open-source build system. CMake is a family of
|
"""A cross-platform, open-source build system. CMake is a family of
|
||||||
@ -157,7 +159,7 @@ class Cmake(Package):
|
|||||||
variant('ownlibs', default=True, description='Use CMake-provided third-party libraries')
|
variant('ownlibs', default=True, description='Use CMake-provided third-party libraries')
|
||||||
variant('qt', default=False, description='Enables the build of cmake-gui')
|
variant('qt', default=False, description='Enables the build of cmake-gui')
|
||||||
variant('doc', default=False, description='Enables the generation of html and man page documentation')
|
variant('doc', default=False, description='Enables the generation of html and man page documentation')
|
||||||
variant('ncurses', default=os.name != 'nt', description='Enables the build of the ncurses gui')
|
variant('ncurses', default=not is_windows, description='Enables the build of the ncurses gui')
|
||||||
|
|
||||||
# See https://gitlab.kitware.com/cmake/cmake/-/issues/21135
|
# See https://gitlab.kitware.com/cmake/cmake/-/issues/21135
|
||||||
conflicts('%gcc platform=darwin', when='@:3.17',
|
conflicts('%gcc platform=darwin', when='@:3.17',
|
||||||
@ -182,7 +184,8 @@ class Cmake(Package):
|
|||||||
depends_on('libuv@1.10.0:', when='@3.12.0:')
|
depends_on('libuv@1.10.0:', when='@3.12.0:')
|
||||||
depends_on('rhash', when='@3.8.0:')
|
depends_on('rhash', when='@3.8.0:')
|
||||||
|
|
||||||
with when('+ownlibs'):
|
for plat in ['darwin', 'linux', 'cray']:
|
||||||
|
with when('+ownlibs platform=%s' % plat):
|
||||||
depends_on('openssl')
|
depends_on('openssl')
|
||||||
depends_on('openssl@:1.0', when='@:3.6.9')
|
depends_on('openssl@:1.0', when='@:3.6.9')
|
||||||
|
|
||||||
@ -193,6 +196,9 @@ class Cmake(Package):
|
|||||||
depends_on('python@2.7.11:', type='build')
|
depends_on('python@2.7.11:', type='build')
|
||||||
depends_on('py-sphinx', type='build')
|
depends_on('py-sphinx', type='build')
|
||||||
|
|
||||||
|
# TODO: update curl package to build with Windows SSL implementation
|
||||||
|
# at which point we can build with +ownlibs on Windows
|
||||||
|
conflicts('~ownlibs', when='platform=windows')
|
||||||
# Cannot build with Intel, should be fixed in 3.6.2
|
# Cannot build with Intel, should be fixed in 3.6.2
|
||||||
# https://gitlab.kitware.com/cmake/cmake/issues/16226
|
# https://gitlab.kitware.com/cmake/cmake/issues/16226
|
||||||
patch('intel-c-gnu11.patch', when='@3.6.0:3.6.1')
|
patch('intel-c-gnu11.patch', when='@3.6.0:3.6.1')
|
||||||
@ -265,7 +271,7 @@ def flag_handler(self, name, flags):
|
|||||||
|
|
||||||
def setup_build_environment(self, env):
|
def setup_build_environment(self, env):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
if '+ownlibs' in spec:
|
if '+ownlibs' in spec and 'platform=windows' not in spec:
|
||||||
env.set('OPENSSL_ROOT_DIR', spec['openssl'].prefix)
|
env.set('OPENSSL_ROOT_DIR', spec['openssl'].prefix)
|
||||||
|
|
||||||
def bootstrap_args(self):
|
def bootstrap_args(self):
|
||||||
@ -317,6 +323,9 @@ def bootstrap_args(self):
|
|||||||
# When building our own private copy of curl we still require an
|
# When building our own private copy of curl we still require an
|
||||||
# external openssl.
|
# external openssl.
|
||||||
if '+ownlibs' in spec:
|
if '+ownlibs' in spec:
|
||||||
|
if 'platform=windows' in spec:
|
||||||
|
args.append('-DCMAKE_USE_OPENSSL=OFF')
|
||||||
|
else:
|
||||||
args.append('-DCMAKE_USE_OPENSSL=ON')
|
args.append('-DCMAKE_USE_OPENSSL=ON')
|
||||||
|
|
||||||
args.append('-DBUILD_CursesDialog=%s' % str('+ncurses' in spec))
|
args.append('-DBUILD_CursesDialog=%s' % str('+ncurses' in spec))
|
||||||
@ -340,7 +349,6 @@ def cmake_bootstrap(self):
|
|||||||
def bootstrap(self, spec, prefix):
|
def bootstrap(self, spec, prefix):
|
||||||
bootstrap_args = self.bootstrap_args()
|
bootstrap_args = self.bootstrap_args()
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
# self.winbootcmake(spec)
|
|
||||||
bootstrap = self.cmake_bootstrap()
|
bootstrap = self.cmake_bootstrap()
|
||||||
bootstrap_args.extend(['.'])
|
bootstrap_args.extend(['.'])
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user