Browse Source

Merge topic 'hp-cpp98-tests'

b0f277db HP aCC: record compiler flag for Ansi C++98 support for version 3.80 onwards
Brad King 11 years ago
parent
commit
9add7071a5

+ 9 - 0
Modules/Compiler/HP-CXX.cmake

@@ -2,3 +2,12 @@ set(CMAKE_CXX_VERBOSE_FLAG "-v")
 
 set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
 set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+
+# HP aCC since version 3.80 supports the flag +hpxstd98 to get ANSI C++98
+# template support. It is known that version 6.25 doesn't need that flag.
+# Current assumption: the flag is needed for every version from 3.80 to 4
+# to get it working.
+if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4 AND
+   NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.80)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "+hpxstd98")
+endif()

+ 9 - 1
Tests/AliasTarget/CMakeLists.txt

@@ -1,7 +1,15 @@
-
 cmake_minimum_required(VERSION 2.8.11)
 project(AliasTarget)
 
+set(CMAKE_CXX_STANDARD 98)
+
+# Those versions of the HP compiler that need a flag to get proper C++98
+# template support also need a flag to use the newer C++ library.
+if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
+    CMAKE_CXX98_STANDARD_COMPILE_OPTION STREQUAL "+hpxstd98")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
+endif ()
+
 add_library(foo SHARED empty.cpp)
 add_library(PREFIX::Foo ALIAS foo)
 add_library(Another::Alias ALIAS foo)

+ 15 - 0
Tests/Complex/CMakeLists.txt

@@ -392,6 +392,21 @@ if(NOT RESULT STREQUAL "a[b]c[d]e")
     "string(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
 endif()
 
+#
+# This tests needs Ansi C++98
+#
+set(CMAKE_CXX_STANDARD 98)
+#
+# GNU extensions are needed for stricmp() on Windows.
+#
+set(CMAKE_CXX_EXTENSIONS TRUE)
+
+# Those versions of the HP compiler that need a flag to get proper C++98
+# template support also need a flag to use the newer C++ library.
+if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
+    CMAKE_CXX98_STANDARD_COMPILE_OPTION STREQUAL "+hpxstd98")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
+endif ()
 
 #
 # Create the libs and the main exe

+ 15 - 0
Tests/ComplexOneConfig/CMakeLists.txt

@@ -362,6 +362,21 @@ if(NOT RESULT STREQUAL "a[b]c[d]e")
     "string(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
 endif()
 
+#
+# This tests needs Ansi C++98
+#
+set(CMAKE_CXX_STANDARD 98)
+#
+# GNU extensions are needed for stricmp() on Windows.
+#
+set(CMAKE_CXX_EXTENSIONS TRUE)
+
+# Those versions of the HP compiler that need a flag to get proper C++98
+# template support also need a flag to use the newer C++ library.
+if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
+    CMAKE_CXX98_STANDARD_COMPILE_OPTION STREQUAL "+hpxstd98")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
+endif ()
 
 #
 # Create the libs and the main exe

+ 9 - 0
Tests/Module/GenerateExportHeader/CMakeLists.txt

@@ -57,6 +57,15 @@ endif()
 
 include(GenerateExportHeader)
 
+set(CMAKE_CXX_STANDARD 98)
+
+# Those versions of the HP compiler that need a flag to get proper C++98
+# template support also need a flag to use the newer C++ library.
+if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
+    CMAKE_CXX98_STANDARD_COMPILE_OPTION STREQUAL "+hpxstd98")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
+endif ()
+
 add_subdirectory(lib_shared_and_static)
 
 add_compiler_export_flags()

+ 10 - 0
Tests/Plugin/CMakeLists.txt

@@ -24,6 +24,16 @@ include_directories(
   ${Plugin_SOURCE_DIR}/include
   )
 
+# We need proper C++98 support from the compiler
+set(CMAKE_CXX_STANDARD 98)
+
+# Those versions of the HP compiler that need a flag to get proper C++98
+# template support also need a flag to use the newer C++ library.
+if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
+    CMAKE_CXX98_STANDARD_COMPILE_OPTION STREQUAL "+hpxstd98")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
+endif ()
+
 # Create an executable that exports an API for use by plugins.
 add_executable(example_exe src/example_exe.cxx)
 set_target_properties(example_exe PROPERTIES