Browse Source

Tests: Refactor RunCMake.VisibilityPreset test setup

Enable languages only in the individual test case.  Enable the test
everywhere except Visual Studio generators (which do not implement the
properties) and just set fake flags as needed to activate relevant code
paths.  Drop unneeded CMAKE_SUPPRESS_REGENERATION which seems to have
been copied from an unrelated test when this test was created.
Brad King 10 years ago
parent
commit
ab55b3b5fa

+ 3 - 16
Tests/RunCMake/CMakeLists.txt

@@ -105,22 +105,9 @@ add_RunCMake_test(CompileFeatures)
 add_RunCMake_test(WriteCompilerDetectionHeader)
 if(NOT WIN32)
   add_RunCMake_test(PositionIndependentCode)
-  set(SKIP_VISIBILITY 0)
-  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 4.2)
-    set(SKIP_VISIBILITY 1)
-  endif()
-
-  if (CMAKE_CXX_COMPILER_ID MATCHES Watcom
-      OR CMAKE_SYSTEM_NAME MATCHES IRIX64
-      OR CMAKE_CXX_COMPILER_ID MATCHES HP
-      OR CMAKE_CXX_COMPILER_ID MATCHES XL
-      OR CMAKE_CXX_COMPILER_ID MATCHES SunPro)
-    set(SKIP_VISIBILITY 1)
-  endif()
-
-  if (NOT SKIP_VISIBILITY)
-    add_RunCMake_test(VisibilityPreset)
-  endif()
+endif()
+if(NOT CMAKE_GENERATOR MATCHES "Visual Studio")
+  add_RunCMake_test(VisibilityPreset)
 endif()
 if (QT4_FOUND)
   set(CompatibleInterface_ARGS -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE})

+ 1 - 6
Tests/RunCMake/VisibilityPreset/CMakeLists.txt

@@ -1,8 +1,3 @@
-
 cmake_minimum_required(VERSION 2.8.4)
-project(${RunCMake_TEST} CXX)
-
-# MSVC creates extra targets which pollute the stderr unless we set this.
-set(CMAKE_SUPPRESS_REGENERATION TRUE)
-
+project(${RunCMake_TEST} NONE)
 include(${RunCMake_TEST}.cmake)

+ 5 - 0
Tests/RunCMake/VisibilityPreset/PropertyTypo.cmake

@@ -1,3 +1,8 @@
+enable_language(CXX)
+
+# Ensure CMake warns even if toolchain does not really have these flags.
+set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
 
 add_library(visibility_preset SHARED lib.cpp)
 set_property(TARGET visibility_preset PROPERTY CXX_VISIBILITY_PRESET hiden)