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_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>")
|
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)
|
cmake_minimum_required(VERSION 2.8.11)
|
||||||
project(AliasTarget)
|
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(foo SHARED empty.cpp)
|
||||||
add_library(PREFIX::Foo ALIAS foo)
|
add_library(PREFIX::Foo ALIAS foo)
|
||||||
add_library(Another::Alias 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\")")
|
"string(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
|
||||||
endif()
|
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
|
# 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\")")
|
"string(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
|
||||||
endif()
|
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
|
# Create the libs and the main exe
|
||||||
|
|
|
@ -57,6 +57,15 @@ endif()
|
||||||
|
|
||||||
include(GenerateExportHeader)
|
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_subdirectory(lib_shared_and_static)
|
||||||
|
|
||||||
add_compiler_export_flags()
|
add_compiler_export_flags()
|
||||||
|
|
|
@ -24,6 +24,16 @@ include_directories(
|
||||||
${Plugin_SOURCE_DIR}/include
|
${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.
|
# Create an executable that exports an API for use by plugins.
|
||||||
add_executable(example_exe src/example_exe.cxx)
|
add_executable(example_exe src/example_exe.cxx)
|
||||||
set_target_properties(example_exe PROPERTIES
|
set_target_properties(example_exe PROPERTIES
|
||||||
|
|
Loading…
Reference in New Issue