HP aCC: record compiler flag for Ansi C++98 support for version 3.80 onwards
Old versions of aCC need a special compiler flag to get full C++98 template support as e.g. CMake itself or the Complex and ComplexOneConfig tests need. The same versions need a special flag to get a proper C++ library, too.
This commit is contained in:
parent
fd8bb34278
commit
b0f277db38
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue