浏览代码

Merge topic 'lcc-updates'

22a2b9c49f Tests: Fix Java tests on multi-config generators
b05d297964 Tests: handle a case when hg executable is broken
2faabab644 Tests: don't fail tests on broken E2K Java RVM
1462a1e15d Tests: check for shlibdeps symbols/shlibs before testing it
070e217399 Tests: enable Java tests if javac is a recurse symlink
7545d1ca9f Tests: don't use broken makensis
f11c12f9c8 Source: Suppress some warnings on LCC 1.23.x
de16db0f64 curl: make libcmcurl buildable with old LibreSSL

Acked-by: Kitware Robot <[email protected]>
Merge-request: !7418
Brad King 3 年之前
父节点
当前提交
c42a9dfce0

+ 4 - 0
Source/cmConfigure.cmake.h.in

@@ -14,6 +14,10 @@
 #pragma warning(disable : 1572) /* floating-point equality test */
 #endif
 
+#if defined(__LCC__) && defined(__EDG__) && (__LCC__ == 123)
+#pragma diag_suppress 2910 /* excess -Wunused-function in 1.23.x */
+#endif
+
 #cmakedefine HAVE_ENVIRON_NOT_REQUIRE_PROTOTYPE
 #cmakedefine HAVE_UNSETENV
 #cmakedefine CMake_USE_MACH_PARSER

+ 66 - 42
Tests/CMakeLists.txt

@@ -1056,8 +1056,11 @@ if(BUILD_TESTING)
       endif()
     endif()
     if(NSIS_MAKENSIS_EXECUTABLE)
-      set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
-        -DCPACK_BINARY_NSIS:BOOL=ON)
+      execute_process(COMMAND ${NSIS_MAKENSIS_EXECUTABLE} "-VERSION" ERROR_QUIET OUTPUT_QUIET RESULT_VARIABLE NSIS_OK)
+      if("${NSIS_OK}" STREQUAL "0")
+        set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
+          -DCPACK_BINARY_NSIS:BOOL=ON)
+      endif()
     endif()
 
     add_test(CPackComponents ${CMAKE_CTEST_COMMAND}
@@ -1153,7 +1156,6 @@ if(BUILD_TESTING)
                                      "components-source"
                                      "components-shlibdeps1"
                                      "components-depend1"
-                                     "components-depend2"
                                      "compression")
       # Run additional tests if dpkg-shlibdeps is available (and is new enough version)
       find_program(SHLIBDEPS_EXECUTABLE NAMES dpkg-shlibdeps)
@@ -1173,6 +1175,11 @@ if(BUILD_TESTING)
             list(APPEND DEB_CONFIGURATIONS_TO_TEST "shlibdeps-with-private-lib-failure"
                                                    "shlibdeps-with-private-lib-success")
         endif()
+        # Check if distro has symbols or shlibs data
+        file(GLOB SHLIBS_FILES_EXIST "/var/lib/dpkg/info/*.shlibs" "/var/lib/dpkg/info/*.symbols")
+        if(SHLIBS_FILES_EXIST)
+          list(APPEND DEB_CONFIGURATIONS_TO_TEST "components-depend2")
+        endif()
       endif()
 
       set(CPackGen "DEB")
@@ -2666,7 +2673,10 @@ if(BUILD_TESTING)
   endif()
   if(NOT DEFINED CMake_TEST_CTestUpdate_HG AND HG_EXECUTABLE
       AND (UNIX OR NOT "${HG_EXECUTABLE}" MATCHES "cygwin"))
-    set(CMake_TEST_CTestUpdate_HG 1)
+    execute_process(COMMAND "${HG_EXECUTABLE}" --version OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE HG_RV)
+    if(HG_RV EQUAL 0)
+      set(CMake_TEST_CTestUpdate_HG 1)
+    endif()
   endif()
   if(CMake_TEST_CTestUpdate_HG)
     if(NOT HG_EXECUTABLE)
@@ -3368,56 +3378,70 @@ if(BUILD_TESTING)
     set(JavaExportImport_BUILD_OPTIONS -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM})
     ADD_TEST_MACRO(JavaExportImport JavaExportImport)
 
-    get_filename_component(JNIPATH ${Java_JAVAC_EXECUTABLE} PATH)
+    get_filename_component(JAVACPATH ${Java_JAVAC_EXECUTABLE} REALPATH)
+    get_filename_component(JNIPATH ${JAVACPATH} PATH)
     find_file(JNI_H jni.h
       "${JNIPATH}/../include"
       "${JNIPATH}/../java/include")
     if(JNI_H AND EXISTS "${JNI_H}") # in case jni.h is a broken symlink
       file(READ "${JNI_H}" JNI_FILE)
       if("${JNI_FILE}" MATCHES "JDK1_2")
-        add_test(NAME Java.Jar COMMAND ${CMAKE_CTEST_COMMAND}
-          --build-and-test
-          "${CMake_SOURCE_DIR}/Tests/Java"
-          "${CMake_BINARY_DIR}/Tests/JavaJar"
-          ${build_generator_args}
-          --build-project hello
-          --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJar/"
-          --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIG>)
-        list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJar")
 
-        # For next tests, java tool must have same architecture as toolchain
-        math(EXPR _object_mode "${CMAKE_SIZEOF_VOID_P} * 8")
         execute_process(
           COMMAND "${Java_JAVA_EXECUTABLE}" -version
           OUTPUT_VARIABLE _version ERROR_VARIABLE _version RESULT_VARIABLE _result
           )
-        if(_result EQUAL 0 AND _version MATCHES "${_object_mode}-Bit")
-          ## next test is valid only if Java version is less than 1.10
-          if ("${Java_VERSION}" VERSION_LESS 1.10)
-            add_test(NAME Java.Javah COMMAND ${CMAKE_CTEST_COMMAND}
-              --build-and-test
-              "${CMake_SOURCE_DIR}/Tests/JavaJavah"
-              "${CMake_BINARY_DIR}/Tests/JavaJavah"
-              ${build_generator_args}
-              --build-project helloJavah
-              --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJavah/"
-              --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIG>)
-            list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJavah")
+
+        # E2K has broken Java RVM before 3.5.2
+        if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "e2k" AND _result EQUAL 0)
+          string(REGEX MATCH "RVM ([0-9.]+)" RVMVER "${_version}")
+          # Consider empty match a broken version too
+          if("${CMAKE_MATCH_1}" VERSION_LESS "3.5.2")
+            set(BROKEN_RVM TRUE)
           endif()
-          ## next test is valid only if Java is, at least, version 1.8
-          if (NOT "${Java_VERSION}" VERSION_LESS 1.8)
-            add_test(NAME Java.NativeHeaders COMMAND ${CMAKE_CTEST_COMMAND}
-              --build-and-test
-              "${CMake_SOURCE_DIR}/Tests/JavaNativeHeaders"
-              "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders"
-              ${build_generator_args}
-              --build-project helloJavaNativeHeaders
-              --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders/"
-              --build-target install
-              --build-options
-              "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/JavaNativeHeaders/Install"
-              --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIG>)
-            list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders")
+        endif()
+
+        if(NOT BROKEN_RVM)
+          add_test(NAME Java.Jar COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIG>
+            --build-and-test
+            "${CMake_SOURCE_DIR}/Tests/Java"
+            "${CMake_BINARY_DIR}/Tests/JavaJar"
+            ${build_generator_args}
+            --build-project hello
+            --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJar/"
+            --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIG>)
+          list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJar")
+
+          # For next tests, java tool must have same architecture as toolchain
+          math(EXPR _object_mode "${CMAKE_SIZEOF_VOID_P} * 8")
+          if(_result EQUAL 0 AND _version MATCHES "${_object_mode}-Bit")
+            ## next test is valid only if Java version is less than 1.10
+            if ("${Java_VERSION}" VERSION_LESS 1.10)
+              add_test(NAME Java.Javah COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIG>
+                --build-and-test
+                "${CMake_SOURCE_DIR}/Tests/JavaJavah"
+                "${CMake_BINARY_DIR}/Tests/JavaJavah"
+                ${build_generator_args}
+                --build-project helloJavah
+                --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJavah/"
+                --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIG>)
+              list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJavah")
+            endif()
+            ## next test is valid only if Java is, at least, version 1.8
+            if (NOT "${Java_VERSION}" VERSION_LESS 1.8)
+              add_test(NAME Java.NativeHeaders COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIG>
+                --build-and-test
+                "${CMake_SOURCE_DIR}/Tests/JavaNativeHeaders"
+                "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders"
+                ${build_generator_args}
+                --build-project helloJavaNativeHeaders
+                --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders/"
+                --build-target install
+                --build-options
+                "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/JavaNativeHeaders/Install"
+                --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIG>)
+              list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders")
+            endif()
           endif()
         endif()
       endif()

+ 12 - 1
Tests/CMakeOnly/AllFindModules/CMakeLists.txt

@@ -56,6 +56,15 @@ macro(check_version_string MODULE_NAME VERSION_VAR)
     if (NOT _exclude_pos EQUAL -1)
         message(STATUS "excluding check of ${VERSION_VAR}='${${VERSION_VAR}}' due to local configuration")
     elseif (${MODULE_NAME}_FOUND)
+
+        unset(SKIP_CHECK)
+        if(${MODULE_NAME} STREQUAL "HG")
+            execute_process(COMMAND "${HG_EXECUTABLE}" --version OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE HG_RV)
+            if(NOT HG_RV EQUAL 0)
+                message(WARNING "Broken HG executable detected, skipping")
+                set(SKIP_CHECK TRUE)
+            endif()
+        endif()
         if (DEFINED ${VERSION_VAR})
             message(STATUS "${VERSION_VAR}='${${VERSION_VAR}}'")
             if (NOT ${VERSION_VAR} MATCHES "^[0-9]")
@@ -71,7 +80,9 @@ macro(check_version_string MODULE_NAME VERSION_VAR)
                 message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0")
             endif()
         else()
-            message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")
+            if(NOT SKIP_CHECK)
+                message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")
+            endif()
         endif()
     endif ()
 endmacro()

+ 5 - 1
Tests/ExternalProject/CMakeLists.txt

@@ -45,7 +45,11 @@ if(NOT DEFINED EP_TEST_HG OR EP_TEST_HG)
   find_package(Hg)
 endif()
 if(NOT DEFINED EP_TEST_HG AND Hg_FOUND)
-  set(EP_TEST_HG 1)
+  # Check if hg executable is working
+  execute_process(COMMAND "${HG_EXECUTABLE}" --version OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE HG_RV)
+  if(HG_RV EQUAL 0)
+    set(EP_TEST_HG 1)
+  endif()
 endif()
 
 message(STATUS "EP_TEST_CVS='${EP_TEST_CVS}' CVS_EXECUTABLE='${CVS_EXECUTABLE}'")

+ 17 - 7
Utilities/cmcurl/lib/vtls/openssl.c

@@ -217,8 +217,10 @@
  * BoringSSL: supported since 5fd1807d95f7 (committed 2016-09-30)
  * LibreSSL: since 2.5.3 (April 12, 2017)
  */
-#if (OPENSSL_VERSION_NUMBER >= 0x10002000L) ||  \
-  defined(OPENSSL_IS_BORINGSSL)
+#if ((OPENSSL_VERSION_NUMBER >= 0x10002000L) &&  \
+     !(defined(LIBRESSL_VERSION_NUMBER) &&       \
+      LIBRESSL_VERSION_NUMBER < 0x20503000L)) || \
+     defined(OPENSSL_IS_BORINGSSL)
 #define HAVE_SSL_CTX_SET_EC_CURVES
 #endif
 
@@ -2282,6 +2284,14 @@ static void ossl_trace(int direction, int ssl_ver, int content_type,
 #  define HAS_NPN 1
 #endif
 
+/* Check for OpenSSL 1.1.0 which has set_{min,max}_proto_version(). */
+#undef HAS_MODERN_SET_PROTO_VER
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L \
+    && !(defined(LIBRESSL_VERSION_NUMBER) && \
+      LIBRESSL_VERSION_NUMBER < 0x20600000L)
+#  define HAS_MODERN_SET_PROTO_VER 1
+#endif
+
 #ifdef HAS_NPN
 
 /*
@@ -2340,7 +2350,7 @@ select_next_proto_cb(SSL *ssl,
 }
 #endif /* HAS_NPN */
 
-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
+#ifdef HAS_MODERN_SET_PROTO_VER
 static CURLcode
 set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
 {
@@ -2424,7 +2434,7 @@ set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
 
   return CURLE_OK;
 }
-#endif
+#endif /* HAS_MODERN_SET_PROTO_VER */
 
 #ifdef OPENSSL_IS_BORINGSSL
 typedef uint32_t ctx_option_t;
@@ -2434,7 +2444,7 @@ typedef uint64_t ctx_option_t;
 typedef long ctx_option_t;
 #endif
 
-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) /* 1.1.0 */
+#if !defined(HAS_MODERN_SET_PROTO_VER)
 static CURLcode
 set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
                                struct Curl_easy *data,
@@ -2509,7 +2519,7 @@ set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
   }
   return CURLE_OK;
 }
-#endif
+#endif /* ! HAS_MODERN_SET_PROTO_VER */
 
 /* The "new session" callback must return zero if the session can be removed
  * or non-zero if the session has been put into the session cache.
@@ -2813,7 +2823,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
       ctx_options |= SSL_OP_NO_SSLv2;
       ctx_options |= SSL_OP_NO_SSLv3;
 
-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
+#if HAS_MODERN_SET_PROTO_VER /* 1.1.0 */
       result = set_ssl_version_min_max(backend->ctx, conn);
 #else
       result = set_ssl_version_min_max_legacy(&ctx_options, data, conn,