diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-01-02 21:06:40 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-01-02 21:06:40 +0100 |
commit | f4a12fc67689a830e9da1c87fd11afe5bc09deb3 (patch) | |
tree | 211ae0cd022a6c11b0026ecc7761a550c584583c /security/nss/coreconf | |
parent | f7d30133221896638f7bf4f66c504255c4b14f48 (diff) | |
download | UXP-f4a12fc67689a830e9da1c87fd11afe5bc09deb3.tar UXP-f4a12fc67689a830e9da1c87fd11afe5bc09deb3.tar.gz UXP-f4a12fc67689a830e9da1c87fd11afe5bc09deb3.tar.lz UXP-f4a12fc67689a830e9da1c87fd11afe5bc09deb3.tar.xz UXP-f4a12fc67689a830e9da1c87fd11afe5bc09deb3.zip |
Issue #1338 - Part 2: Update NSS to 3.48-RTM
Diffstat (limited to 'security/nss/coreconf')
-rw-r--r-- | security/nss/coreconf/Linux.mk | 5 | ||||
-rw-r--r-- | security/nss/coreconf/OS2.mk | 2 | ||||
-rw-r--r-- | security/nss/coreconf/OpenBSD.mk | 5 | ||||
-rw-r--r-- | security/nss/coreconf/UNIX.mk | 4 | ||||
-rw-r--r-- | security/nss/coreconf/WIN32.mk | 19 | ||||
-rw-r--r-- | security/nss/coreconf/check_cc.py (renamed from security/nss/coreconf/check_cc_clang.py) | 9 | ||||
-rw-r--r-- | security/nss/coreconf/command.mk | 2 | ||||
-rw-r--r-- | security/nss/coreconf/config.gypi | 63 | ||||
-rw-r--r-- | security/nss/coreconf/coreconf.dep | 2 | ||||
-rw-r--r-- | security/nss/coreconf/fuzz.sh | 2 | ||||
-rw-r--r-- | security/nss/coreconf/nspr.sh | 21 | ||||
-rw-r--r-- | security/nss/coreconf/rules.mk | 34 |
12 files changed, 111 insertions, 57 deletions
diff --git a/security/nss/coreconf/Linux.mk b/security/nss/coreconf/Linux.mk index bb9db413b..d07f8a3c5 100644 --- a/security/nss/coreconf/Linux.mk +++ b/security/nss/coreconf/Linux.mk @@ -21,6 +21,7 @@ ifeq ($(USE_PTHREADS),1) endif DEFAULT_COMPILER = gcc +DEFINES += -D_DEFAULT_SOURCE -D_BSD_SOURCE ifeq ($(OS_TARGET),Android) ifndef ANDROID_NDK @@ -135,6 +136,10 @@ ifeq ($(KERNEL),Linux) endif OS_LIBS = $(OS_PTHREAD) -ldl -lc +ifeq ($(OS_TARGET),Android) + OS_LIBS += -llog +endif + ifdef USE_PTHREADS DEFINES += -D_REENTRANT endif diff --git a/security/nss/coreconf/OS2.mk b/security/nss/coreconf/OS2.mk index f23571ce0..17a8df5d2 100644 --- a/security/nss/coreconf/OS2.mk +++ b/security/nss/coreconf/OS2.mk @@ -39,8 +39,6 @@ HIGHMEM_LDFLAG = -Zhigh-mem endif ifndef NO_SHARED_LIB -WRAP_MALLOC_LIB = -WRAP_MALLOC_CFLAGS = DSO_CFLAGS = DSO_PIC_CFLAGS = MKSHLIB = $(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@ diff --git a/security/nss/coreconf/OpenBSD.mk b/security/nss/coreconf/OpenBSD.mk index 36a92d087..acf8507aa 100644 --- a/security/nss/coreconf/OpenBSD.mk +++ b/security/nss/coreconf/OpenBSD.mk @@ -36,6 +36,11 @@ DSO_CFLAGS = -fPIC -DPIC DSO_LDOPTS = -shared -fPIC -Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) MKSHLIB = $(CC) $(DSO_LDOPTS) +ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) +endif +PROCESS_MAP_FILE = grep -v ';-' $< | \ + sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@ USE_SYSTEM_ZLIB = 1 ZLIB_LIBS = -lz diff --git a/security/nss/coreconf/UNIX.mk b/security/nss/coreconf/UNIX.mk index b448e7553..8f6042eee 100644 --- a/security/nss/coreconf/UNIX.mk +++ b/security/nss/coreconf/UNIX.mk @@ -14,9 +14,7 @@ ifdef BUILD_OPT DEFINES += -UDEBUG -DNDEBUG else OPTIMIZER += -g - USERNAME := $(shell whoami) - USERNAME := $(subst -,_,$(USERNAME)) - DEFINES += -DDEBUG -UNDEBUG -DDEBUG_$(USERNAME) + DEFINES += -DDEBUG -UNDEBUG endif ifdef BUILD_TREE diff --git a/security/nss/coreconf/WIN32.mk b/security/nss/coreconf/WIN32.mk index be795f0ce..ac1a454bc 100644 --- a/security/nss/coreconf/WIN32.mk +++ b/security/nss/coreconf/WIN32.mk @@ -104,7 +104,7 @@ endif DLL_SUFFIX = dll ifdef NS_USE_GCC - OS_CFLAGS += -mwindows -mms-bitfields + OS_CFLAGS += -mwindows _GEN_IMPORT_LIB=-Wl,--out-implib,$(IMPORT_LIBRARY) DLLFLAGS += -mwindows -o $@ -shared -Wl,--export-all-symbols $(if $(IMPORT_LIBRARY),$(_GEN_IMPORT_LIB)) ifdef BUILD_OPT @@ -116,11 +116,7 @@ ifdef NS_USE_GCC DEFINES += -UDEBUG -DNDEBUG else OPTIMIZER += -g - NULLSTRING := - SPACE := $(NULLSTRING) # end of the line - USERNAME := $(subst $(SPACE),_,$(USERNAME)) - USERNAME := $(subst -,_,$(USERNAME)) - DEFINES += -DDEBUG -UNDEBUG -DDEBUG_$(USERNAME) + DEFINES += -DDEBUG -UNDEBUG endif else # !NS_USE_GCC WARNING_CFLAGS = -W3 -nologo -D_CRT_SECURE_NO_WARNINGS \ @@ -179,10 +175,7 @@ else # !NS_USE_GCC else OPTIMIZER += -Zi -Fd$(OBJDIR)/ -Od NULLSTRING := - SPACE := $(NULLSTRING) # end of the line - USERNAME := $(subst $(SPACE),_,$(USERNAME)) - USERNAME := $(subst -,_,$(USERNAME)) - DEFINES += -DDEBUG -UNDEBUG -DDEBUG_$(USERNAME) + DEFINES += -DDEBUG -UNDEBUG DLLFLAGS += -DEBUG -OUT:$@ LDFLAGS += -DEBUG ifeq ($(_MSC_VER),$(_MSC_VER_6)) @@ -268,6 +261,12 @@ else endif endif +# clear any CSTD and CXXSTD unless we're using GCC +ifndef NS_USE_GCC + CSTD = + CXXSTD = +endif + # # override the definitions of RELEASE_TREE found in tree.mk # diff --git a/security/nss/coreconf/check_cc_clang.py b/security/nss/coreconf/check_cc.py index 4b9541195..6d7e38096 100644 --- a/security/nss/coreconf/check_cc_clang.py +++ b/security/nss/coreconf/check_cc.py @@ -5,17 +5,18 @@ import subprocess import sys def main(): - if sys.platform == 'win32': + if sys.platform == 'win32' or len(sys.argv) < 2: print(0) else: cc = os.environ.get('CC', 'cc') try: - cc_is_clang = 'clang' in subprocess.check_output( + cc_is_arg = sys.argv[1] in subprocess.check_output( [cc, '--version'], universal_newlines=True) except OSError: # We probably just don't have CC/cc. - cc_is_clang = False - print(int(cc_is_clang)) + cc_is_arg = False + print(int(cc_is_arg)) if __name__ == '__main__': main() + diff --git a/security/nss/coreconf/command.mk b/security/nss/coreconf/command.mk index 5e92748aa..a89252056 100644 --- a/security/nss/coreconf/command.mk +++ b/security/nss/coreconf/command.mk @@ -14,6 +14,8 @@ CCF = $(CC) $(CFLAGS) LINK_DLL = $(LD) $(OS_DLLFLAGS) $(DLLFLAGS) $(XLDFLAGS) CFLAGS = $(OPTIMIZER) $(OS_CFLAGS) $(WARNING_CFLAGS) $(XP_DEFINE) \ $(DEFINES) $(INCLUDES) $(XCFLAGS) +CSTD = -std=c99 +CXXSTD = -std=c++11 PERL = perl RANLIB = echo TAR = /bin/tar diff --git a/security/nss/coreconf/config.gypi b/security/nss/coreconf/config.gypi index ba1b0c8c5..3b049111a 100644 --- a/security/nss/coreconf/config.gypi +++ b/security/nss/coreconf/config.gypi @@ -19,6 +19,8 @@ 'conditions': [ ['OS=="android"', { 'target_arch%': 'arm', + }, 'OS=="ios"', { + 'target_arch%': 'arm64', }, { # Default architecture we're building for is the architecture we're # building on. @@ -35,7 +37,7 @@ },{ 'use_system_sqlite%': 0, }], - ['OS=="mac" or OS=="win"', { + ['OS=="mac" or OS=="ios" or OS=="win"', { 'cc_use_gnu_ld%': 0, }, { 'cc_use_gnu_ld%': 1, @@ -54,7 +56,7 @@ 'zlib_libs%': ['-lz'], 'dll_prefix': 'lib', 'conditions': [ - ['OS=="mac"', { + ['OS=="mac" or OS=="ios"', { 'moz_debug_flags%': '-gdwarf-2 -gfull', 'dll_suffix': 'dylib', }, { @@ -64,10 +66,15 @@ ], }], ['"<(GENERATOR)"=="ninja"', { - 'cc_is_clang%': '<!(<(python) <(DEPTH)/coreconf/check_cc_clang.py)', + 'cc_is_clang%': '<!(<(python) <(DEPTH)/coreconf/check_cc.py clang)', }, { 'cc_is_clang%': '0', }], + ['"<(GENERATOR)"=="ninja"', { + 'cc_is_gcc%': '<!(<(python) <(DEPTH)/coreconf/check_cc.py gcc)', + }, { + 'cc_is_gcc%': '0', + }], ], }, # Copy conditionally-set variables out one scope. @@ -86,18 +93,21 @@ 'dll_suffix': '<(dll_suffix)', 'freebl_name': '<(freebl_name)', 'cc_is_clang%': '<(cc_is_clang)', + 'cc_is_gcc%': '<(cc_is_gcc)', 'cc_use_gnu_ld%': '<(cc_use_gnu_ld)', # Some defaults + 'disable_arm_hw_aes%': 0, 'disable_tests%': 0, 'disable_chachapoly%': 0, 'disable_dbm%': 0, 'disable_libpkix%': 1, 'disable_werror%': 0, 'mozilla_client%': 0, + 'comm_client%': 0, 'moz_fold_libs%': 0, 'moz_folded_library_name%': '', 'sanitizer_flags%': 0, - 'test_build%': 0, + 'static_libs%': 0, 'no_zdefs%': 0, 'fuzz%': 0, 'fuzz_tls%': 0, @@ -120,7 +130,7 @@ # This is mostly for linking to libraries. 'variables': { 'mapfile%': '', - 'test_build%': 0, + 'static_libs%': 0, 'debug_optimization_level%': '0', 'release_optimization_level%': '2', }, @@ -141,7 +151,7 @@ 'NSS_NO_INIT_SUPPORT', ], }], - [ 'OS!="android" and OS!="mac" and OS!="win"', { + [ 'OS!="android" and OS!="mac" and OS!="ios" and OS!="win"', { 'libraries': [ '-lpthread', ], @@ -152,6 +162,11 @@ '-lc', ], }], + [ 'OS=="android"', { + 'libraries': [ + '-llog', + ], + }], [ 'fuzz==1', { 'variables': { 'debug_optimization_level%': '1', @@ -212,7 +227,7 @@ 'product_dir': '<(nss_dist_obj_dir)/lib' }, '_type=="executable"', { 'product_dir': '<(nss_dist_obj_dir)/bin' - }, '_standalone_static_library==1', { + }, 'static_libs==1 or _standalone_static_library==1', { 'product_dir': '<(nss_dist_obj_dir)/lib' }], # mapfile handling @@ -256,7 +271,7 @@ }], }] ], - }, 'test_build==1 and _type=="shared_library"', { + }, 'static_libs==1 and _type=="shared_library"', { # When linking a shared lib against a static one, XCode doesn't # export the latter's symbols by default. -all_load fixes that. 'xcode_settings': { @@ -303,6 +318,9 @@ }, }, }], + [ '_type=="static_library" and static_libs==1', { + 'standalone_static_library': 1, + }], ], 'default_configuration': 'Debug', 'configurations': { @@ -337,6 +355,8 @@ 'LINUX2_1', 'LINUX', 'linux', + '_DEFAULT_SOURCE', # for <endian.h> functions, strdup, realpath, and getentropy + '_BSD_SOURCE', # for the above in glibc <= 2.19 ], }], [ 'OS=="dragonfly" or OS=="freebsd"', { @@ -354,7 +374,7 @@ 'OPENBSD', ], }], - ['OS=="mac" or OS=="dragonfly" or OS=="freebsd" or OS=="netbsd" or OS=="openbsd"', { + ['OS=="mac" or OS=="ios" or OS=="dragonfly" or OS=="freebsd" or OS=="netbsd" or OS=="openbsd"', { 'defines': [ 'HAVE_BSD_FLOCK', ], @@ -366,15 +386,18 @@ '_REENTRANT', ], }], - [ 'OS!="mac" and OS!="win"', { + [ 'OS!="mac" and OS!="ios" and OS!="win"', { 'cflags': [ '-fPIC', '-pipe', '-ffunction-sections', '-fdata-sections', ], + 'cflags_c': [ + '-std=c99', + ], 'cflags_cc': [ - '-std=c++0x', + '-std=c++11', ], 'ldflags': [ '-z', 'noexecstack', @@ -392,7 +415,7 @@ }], [ 'use_pprof==1 and OS!="android" and OS!="win"', { 'conditions': [ - [ 'OS=="mac"', { + [ 'OS=="mac" or OS=="ios"', { 'xcode_settings': { 'OTHER_LDFLAGS': [ '-lprofiler' ], }, @@ -452,7 +475,7 @@ 'ANDROID', ], }], - [ 'OS=="mac"', { + [ 'OS=="mac" or OS=="ios"', { 'defines': [ 'DARWIN', ], @@ -467,8 +490,18 @@ 'ARCHS': ['x86_64'], }, }], + [ 'target_arch=="arm64"', { + 'xcode_settings': { + 'ARCHS': ['arm64'], + }, + }], ], }], + [ 'OS=="ios"', { + 'xcode_settings': { + 'IPHONEOS_DEPLOYMENT_TARGET': '<(iphone_deployment_target)', + }, + }], [ 'OS=="win"', { 'defines': [ '_WINDOWS', @@ -536,7 +569,7 @@ 'Debug': { 'inherit_from': ['Common'], 'conditions': [ - [ 'OS!="mac" and OS!="win"', { + [ 'OS!="mac" and OS!="ios" and OS!="win"', { 'cflags': [ '-g', '<(moz_debug_flags)', @@ -606,7 +639,7 @@ 'process_map_file': ['/bin/sh', '-c', '/usr/bin/env grep -v ";-" >(mapfile) | sed -e "s,;+,," -e "s; DATA ;;" -e "s,;;,," -e "s,;.*,;," > >@(_outputs)'], }, }], - [ 'OS=="mac"', { + [ 'OS=="mac" or OS=="ios"', { 'variables': { 'process_map_file': ['/bin/sh', '-c', '/usr/bin/grep -v ";+" >(mapfile) | grep -v ";-" | sed -e "s; DATA ;;" -e "s,;;,," -e "s,;.*,," -e "s,^,_," > >@(_outputs)'], }, diff --git a/security/nss/coreconf/coreconf.dep b/security/nss/coreconf/coreconf.dep index 4634c4885..5182f7555 100644 --- a/security/nss/coreconf/coreconf.dep +++ b/security/nss/coreconf/coreconf.dep @@ -10,5 +10,3 @@ */ #error "Do not include this header file." - - diff --git a/security/nss/coreconf/fuzz.sh b/security/nss/coreconf/fuzz.sh index c7b8844b6..da6000cbe 100644 --- a/security/nss/coreconf/fuzz.sh +++ b/security/nss/coreconf/fuzz.sh @@ -14,7 +14,7 @@ if [ -z "$CC" ]; then export CXX=clang++ fi -gyp_params+=(-Dtest_build=1 -Dfuzz=1 -Dsign_libs=0) +gyp_params+=(-Dstatic_libs=1 -Dfuzz=1 -Dsign_libs=0) # Add debug symbols even for opt builds. nspr_params+=(--enable-debug-symbols) diff --git a/security/nss/coreconf/nspr.sh b/security/nss/coreconf/nspr.sh index 325a188c3..d84674e0e 100644 --- a/security/nss/coreconf/nspr.sh +++ b/security/nss/coreconf/nspr.sh @@ -36,15 +36,30 @@ nspr_build() extra_params+=(--enable-64bit) fi - echo "NSPR [1/3] configure ..." + echo "NSPR [1/5] configure ..." pushd "$nspr_dir" >/dev/null CFLAGS="$nspr_cflags" CXXFLAGS="$nspr_cxxflags" \ LDFLAGS="$nspr_ldflags" CC="$CC" CXX="$CCC" \ run_verbose ../configure "${extra_params[@]}" "$@" popd >/dev/null - echo "NSPR [2/3] make ..." + echo "NSPR [2/5] make ..." run_verbose make -C "$nspr_dir" - echo "NSPR [3/3] install ..." + + if [ "$build_nspr_tests" = 1 ]; then + echo "NSPR [3/5] build tests ..." + run_verbose make -C "$nspr_dir/pr/tests" + else + echo "NSPR [3/5] NOT building tests" + fi + + if [[ "$build_nspr_tests" = 1 && "$run_nspr_tests" = 1 ]]; then + echo "NSPR [4/5] run tests ..." + run_verbose make -C "$nspr_dir/pr/tests" runtests + else + echo "NSPR [4/5] NOT running tests" + fi + + echo "NSPR [5/5] install ..." run_verbose make -C "$nspr_dir" install } diff --git a/security/nss/coreconf/rules.mk b/security/nss/coreconf/rules.mk index 3a8013529..acf4fcc62 100644 --- a/security/nss/coreconf/rules.mk +++ b/security/nss/coreconf/rules.mk @@ -391,23 +391,23 @@ core_abspath = '$(if $(findstring :,$(1)),$(1),$(if $(filter /%,$(1)),$(1),$(PWD $(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.c @$(MAKE_OBJDIR) ifdef USE_NT_C_SYNTAX - $(CC) -Fo$@ -c $(CFLAGS) $(call core_abspath,$<) + $(CC) -Fo$@ -c $(CSTD) $(CFLAGS) $(call core_abspath,$<) else ifdef NEED_ABSOLUTE_PATH - $(CC) -o $@ -c $(CFLAGS) $(call core_abspath,$<) + $(CC) -o $@ -c $(CSTD) $(CFLAGS) $(call core_abspath,$<) else - $(CC) -o $@ -c $(CFLAGS) $< + $(CC) -o $@ -c $(CSTD) $(CFLAGS) $< endif endif $(PROG_PREFIX)%$(OBJ_SUFFIX): %.c ifdef USE_NT_C_SYNTAX - $(CC) -Fo$@ -c $(CFLAGS) $(call core_abspath,$<) + $(CC) -Fo$@ -c $(CSTD) $(CFLAGS) $(call core_abspath,$<) else ifdef NEED_ABSOLUTE_PATH - $(CC) -o $@ -c $(CFLAGS) $(call core_abspath,$<) + $(CC) -o $@ -c $(CSTD) $(CFLAGS) $(call core_abspath,$<) else - $(CC) -o $@ -c $(CFLAGS) $< + $(CC) -o $@ -c $(CSTD) $(CFLAGS) $< endif endif @@ -428,12 +428,12 @@ $(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.S $(OBJDIR)/$(PROG_PREFIX)%: %.cpp @$(MAKE_OBJDIR) ifdef USE_NT_C_SYNTAX - $(CCC) -Fo$@ -c $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) + $(CCC) -Fo$@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) else ifdef NEED_ABSOLUTE_PATH - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) else - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $< + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $< endif endif @@ -444,16 +444,16 @@ $(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.cc $(MAKE_OBJDIR) ifdef STRICT_CPLUSPLUS_SUFFIX echo "#line 1 \"$<\"" | cat - $< > $(OBJDIR)/t_$*.cc - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $(OBJDIR)/t_$*.cc + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(OBJDIR)/t_$*.cc rm -f $(OBJDIR)/t_$*.cc else ifdef USE_NT_C_SYNTAX - $(CCC) -Fo$@ -c $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) + $(CCC) -Fo$@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) else ifdef NEED_ABSOLUTE_PATH - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) else - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $< + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $< endif endif endif #STRICT_CPLUSPLUS_SUFFIX @@ -462,16 +462,16 @@ $(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.cpp @$(MAKE_OBJDIR) ifdef STRICT_CPLUSPLUS_SUFFIX echo "#line 1 \"$<\"" | cat - $< > $(OBJDIR)/t_$*.cc - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $(OBJDIR)/t_$*.cc + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(OBJDIR)/t_$*.cc rm -f $(OBJDIR)/t_$*.cc else ifdef USE_NT_C_SYNTAX - $(CCC) -Fo$@ -c $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) + $(CCC) -Fo$@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) else ifdef NEED_ABSOLUTE_PATH - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<) else - $(CCC) -o $@ -c $(CFLAGS) $(CXXFLAGS) $< + $(CCC) -o $@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $< endif endif endif #STRICT_CPLUSPLUS_SUFFIX |